新闻中心

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

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

c++ string去除空格_c++ trim去除首尾空白字符

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

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

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

#include <string>
#include <cctype>
#include <iostream>
<p>std::string trim(const std::string& str) {
if (str.empty()) return str;</p><pre class='brush:php;toolbar:false;'>size_t start = 0;
size_t end = str.length() - 1;

// 找到第一个非空白字符
while (start <= end && std::isspace(static_cast<unsigned char>(str[start]))) {
    ++start;
}

// 找到最后一个非空白字符
while (end >= start && std::isspace(static_cast<unsigned char>(str[end]))) {
    --end;
}

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

}

说明:

Moshi Chat Moshi Chat

法国AI实验室Kyutai推出的端到端实时多模态AI语音模型,具备听、说、看的能力,不仅可以实时收听,还能进行自然对话。

Moshi Chat 160 查看详情 Moshi Chat
  • 使用std::isspace判断字符是否为空白(需包含<cctype></cctype>)。
  • static_cast<unsigned char></unsigned>是为了避免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;
<pre class='brush:php;toolbar:false;'>size_t start = 0;
size_t end = str.length() - 1;

while (start <= end && std::isspace(static_cast<unsigned char>(str[start])))
    ++start;

str.erase(0, start);

end = str.length() - 1;  // 更新end位置
while (end != std::string::npos && std::isspace(static_cast<unsigned char>(str[end])))
    --end;

str.erase(end + 1);

}

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

以上就是C++ string去除空格_C++ trim去除首尾空白字符的详细内容,更多请关注其它相关文章!


# 互斥  # 花都房地产营销推广  # 网站点击刷关键词排名  # SEO人才市场推荐2022  # 普兰店网站推广  # 泉州推广网站收费  # 正规网站建设生产  # 海参哥seo  # 日照绍兴网站建设  # 网站的推广欢喜易 速达  # seo创业技巧  # 适用于  # 还能  # 工具  # 头文件  # 前向  # 如何实现  # 如何处理  # 如何使用  # 换行  # 第一个  # 标准库  # stream  # ios  # c++  # ai 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: mc.js游戏直达 mc.js网页免下载版本秒进地址  解决J*aScript中重复选择项的确认对话框显示问题  J*aScript Promise链中如何正确终止后续.then执行并处理错误  支付宝如何设置安全保护_支付宝安全设置的全面教程  Windows7怎么硬盘安装 Windows7提取ISO镜像到非系统盘并运行setup.exe实现硬盘直装【教程】  微博网页版首页入口 微博电脑端官网登录链接  怎样更改Windows系统的默认安装路径_避免C盘爆满的终极设置【技巧】  Excel Power Pivot如何处理XML数据源 构建高级数据模型  百度浏览器字体显示异常偏小_百度浏览器字体渲染修复方案  荣耀Play7TPro怎样在信息App置顶客服对话_iPhone荣耀Play7TPro信息App置顶客服对话【优先查看】  TikTok国际版官网直达_TikTok国际版官网直达进入在线观看  斑马英语APP如何开启夜间护眼阅读_斑马英语APP夜间模式与低蓝光设置教程  css链接悬停下划线样式如何自定义_使用::after结合content和transition  淘宝网网页版登录入口 淘宝官方网页版快捷登录  c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架  Win10如何清理注册表垃圾 Win10注册表维护与优化指南【慎用】  微信网页版扫码登录入口 微信网页版二维码登录入口  微信网页版官方入口教程 微信网页版网页版快速登录步骤  Odoo 16:在表单视图中基于当前记录动态修改Tree视图属性  铃兰之剑为这和平的世界希里技能组及加点推荐  处理Kafka消费者会话超时:深入理解消息处理语义与幂等性  4399网页游戏电脑版全新入口 4399电脑端在线玩指南  QQ官网正版登录链接 QQ在线登录入口最新  TikTok国际版网页端快速入口 TikTok全球版短视频浏览教程  如何使用spryker/configurable-bundles-products-resource-relationship模块解决复杂产品捆绑关系难题  在J*a中如何使用Exception包装底层异常_异常包装与信息传递方法说明  快手极速版在线观看 官方网页版登录地址  《刺客信条4:黑旗》重制版新细节曝光:无缝加载 地图更细致!  qq游戏大厅官方下载_qq游戏免费下载安装入口  随机参数递归函数的基准调用次数与时间复杂度探究  ACG动漫手机版官网入口 手机ACG动漫APP在线观看正版  Django AJAX 文件上传教程:解决图片无法保存到模型的常见问题  夸克浏览器桌面版同步不了书签怎么处理 夸克浏览器跨设备同步异常解决方案  蛙漫画网页版全站入口 蛙漫热门作品免费浏览  composer的"require-dev"部分是用来做什么的?  《主播少女的秘密账号迷宫》首支宣传片  html5 app怎么运行环境_配html5 app运行环境【教程】  Composer的 archive 命令怎么用_快速打包你的PHP项目及其Composer依赖  AO3最新可访问网址 Archive of Our Own官方在线入口  Linux如何排查内存不足OOME问题_LinuxOOM分析教程  C++如何操作大型数据集_使用C++流式处理(Streaming)技术避免一次性加载大文件  构建轻量级网站内部消息系统:Formspree 集成指南  百度网盘网页版入口 百度网盘网页版官方登录网址  三星GalaxyZFold5怎样在相册制作折叠屏分镜_iPhone三星GalaxyZFold5相册制作折叠屏分镜【创意编辑】  冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法  Python vgamepad库按键模拟:正确使用XUSB_BUTTON常量  163邮箱登录密码 163邮箱忘记密码找回  QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网  React中useState与局部变量:理解组件状态管理与渲染机制  高德地图怎么看全景照片_高德地图全景照片浏览教程 

搜索