C++标准库无trim函数,需手动实现。通过std::isspace配合循环查找首尾非空白字符,再用substr或erase提取或删除空白,可安全高效去除字符串首尾空格、制表符、换行等空白字符。
在C++中,标准库没有提供像其他语言那样的trim()函数来去除字符串首尾的空白字符,但可以通过std::string的成员函数结合std::isspace等工具手动实现。下面介绍一种常用且高效的方法,用于去除字符串首尾的空白字符(包括空格、制表符、换行等)。
可以编写两个辅助函数:一个用于查找第一个非空白字符的位置,另一个用于查找最后一个非空白字符的位置,然后使用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小时内与您取得联系。