全网整合营销服务商

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

免费咨询热线: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  # 循环  # 第一个  # 换行  # 适用于  # 可以通过  # 只想  # 或删除  # 再用  # 可将  # 不包括  # 是为了 


相关文章: 香港服务器部署网站为何提示未备案?  如何通过西部建站助手安装IIS服务器?  h5网站制作工具有哪些,h5页面制作工具有哪些?  婚礼视频制作网站,学习*后期制作的网站有哪些?  金*站制作公司有哪些,金华教育集团官网?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  非常酷的网站设计制作软件,酷培ai教育官方网站?  宝塔新建站点报错如何解决?  如何解决VPS建站LNMP环境配置常见问题?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  如何通过建站之星自助学习解决操作问题?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  建站之星安装失败:服务器环境不兼容?  建站之星好吗?新手能否轻松上手建站?  制作企业网站建设方案,怎样建设一个公司网站?  高端建站三要素:定制模板、企业官网与响应式设计优化  建站之星后台管理如何实现高效配置?  威客平台建站流程解析:高效搭建教程与设计优化方案  如何在建站宝盒中设置产品搜索功能?  东莞专业制作网站的公司,东莞大学生网的网址是什么?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  建站之星如何实现网站加密操作?  网站制作免费,什么网站能看正片电影?  常州企业建站如何选择最佳模板?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  如何通过云梦建站系统实现SEO快速优化?  建站之星如何实现PC+手机+微信网站五合一建站?  建站主机选哪家性价比最高?  制作网站的软件免费下载,免费制作app哪个平台好?  建站之星如何修改网站生成路径?  如何快速生成高效建站系统源代码?  如何在IIS中新建站点并解决端口绑定冲突?  SQL查询语句优化的实用方法总结  动图在线制作网站有哪些,滑动动图图集怎么做?  实现虚拟支付需哪些建站技术支撑?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  如何确保FTP站点访问权限与数据传输安全?  seo网站制作优化,网站SEO优化步骤有哪些?  如何正确下载安装西数主机建站助手?  家庭建站与云服务器建站,如何选择更优?  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  建站主机服务器选型指南与性能优化方案解析  Thinkphp 中 distinct 的用法解析  如何在阿里云完成域名注册与建站?  营销式网站制作方案,销售哪个网站招聘效果最好?  php json中文编码为null的解决办法  如何基于云服务器快速搭建个人网站?  建站为何优先选择香港服务器? 

您的项目需求

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