全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C++ string去除空格_C++ trim去除首尾空白字符

C++标准库无trim函数,需手动实现。通过std::isspace配合循环查找首尾非空白字符,再用substr或erase提取或删除空白,可安全高效去除字符串首尾空格、制表符、换行等空白字符。

在C++中,标准库没有提供像其他语言那样的trim()函数来去除字符串首尾的空白字符,但可以通过std::string的成员函数结合std::isspace等工具手动实现。下面介绍一种常用且高效的方法,用于去除字符串首尾的空白字符(包括空格、制表符、换行等)。

1. 实现Trim函数去除首尾空白

可以编写两个辅助函数:一个用于查找第一个非空白字符的位置,另一个用于查找最后一个非空白字符的位置,然后使用substr提取中间部分。

#include 
#include 
#include 

std::string trim(const std::string& str) { if (str.empty()) return str;

size_t start = 0;
size_t end = str.length() - 1;

// 找到第一个非空白字符
while (start zuojiankuohaophpcn= end && std::isspace(static_castzuojiankuohaophpcnunsigned charyoujiankuohaophpcn(str[start]))) {
    ++start;
}

// 找到最后一个非空白字符
while (end youjiankuohaophpcn= start && std::isspace(static_castzuojiankuohaophpcnunsigned charyoujiankuohaophpcn(str[end]))) {
    --end;
}

return str.substr(start, end - start + 1);

}

说明:

  • 使用std::isspace判断字符是否为空白(需包含)。
  • static_cast是为了避免char为负值时传递给std::isspace导致未定义行为。
  • 函数返回新字符串,原字符串不变。

2. 使用示例

int main() {
    std::string s = "  \t  Hello World  \n  ";
    std::cout << "[" << trim(s) << "]" << std::endl;
    // 输出: [Hello World]
    return 0;
}

3. 去除特定空白字符(仅空格)

如果只想去除空格(不包括制表符或换行),可将std::isspace替换为比较' '

while (start <= end && str[start] == ' ') ++start;
while (end >= start && str[end] == ' ') --end;

4. 原地修改字符串(减少内存分配)

若希望直接修改原字符串,可使用erase

void trim_inplace(std::string& str) {
    if (str.empty()) return;
size_t start = 0;
size_t end = str.length() - 1;

while (start zuojiankuohaophpcn= end && std::isspace(static_castzuojiankuohaophpcnunsigned charyoujiankuohaophpcn(str[start])))
    ++start;

str.erase(0, start);

end = str.length() - 1;  // 更新end位置
while (end != std::string::npos && std::isspace(static_castzuojiankuohaophpcnunsigned charyoujiankuohaophpcn(str[end])))
    --end;

str.erase(end + 1);

}

基本上就这些。这个方法简洁、安全,适用于大多数C++项目中的字符串去空需求。


# 工具  # ai  # c++  # ios  # stream  # 标准库  # String  # 成员函数  # 字符串  # char  # 循环  # 第一个  # 换行  # 适用于  # 可以通过  # 只想  # 或删除  # 再用  # 可将  # 不包括  # 是为了 


相关文章: C++如何将C风格字符串(char*)转换为std::string?(代码示例)  ,石家庄四十八中学官网?  如何快速搭建高效服务器建站系统?  建站之星价格显示格式升级,你的预算足够吗?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  建站之家VIP精选网站模板与SEO优化教程整合指南  开封网站制作公司,网络用语开封是什么意思?  网站制作难吗安全吗,做一个网站需要多久时间?  建站上市公司网站建设方案与SEO优化服务定制指南  网站制作软件有哪些,制图软件有哪些?  如何批量查询域名的建站时间记录?  网站制作的步骤包括,正确网址格式怎么写?  建站之星安装路径如何正确选择及配置?  如何解决ASP生成WAP建站中文乱码问题?  如何用y主机助手快速搭建网站?  css网站制作参考文献有哪些,易聊怎么注册?  如何在腾讯云免费申请建站?  c# 在高并发场景下,委托和接口调用的性能对比  php json中文编码为null的解决办法  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  如何通过西部数码建站助手快速创建专业网站?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  如何正确下载安装西数主机建站助手?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  外贸公司网站制作,外贸网站建设一般有哪些步骤?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  定制建站是什么?如何实现个性化需求?  如何选择靠谱的建站公司加盟品牌?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  导航网站建站方案与优化指南:一站式高效搭建技巧解析  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  郑州企业网站制作公司,郑州招聘网站有哪些?  重庆市网站制作公司,重庆招聘网站哪个好?  南京网站制作费用,南京远驱官方网站?  学校免费自助建站系统:智能生成+拖拽设计+多端适配  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  如何通过WDCP绑定主域名及创建子域名站点?  网站制作公司,橙子建站是合法的吗?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  建站之星ASP如何实现CMS高效搭建与安全管理?  开源网站制作软件,开源网站什么意思?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  建站之星如何助力网站排名飙升?揭秘高效技巧 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。