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

在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
法国AI实验室Kyutai推出的端到端实时多模态AI语音模型,具备听、说、看的能力,不仅可以实时收听,还能进行自然对话。
160
查看详情
- 使用
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与局部变量:理解组件状态管理与渲染机制
高德地图怎么看全景照片_高德地图全景照片浏览教程


2025-12-06
浏览次数:次
返回列表
,再用substr或erase提取或删除空白,可安全高效去除字符串首尾空格、制表符、换行等空白字符。