删除字符串中所有空格可用多种方法:①std::remove与erase结合,高效删除普通空格;②std::remove_if配合isspace,清除各类空白字符;③手动遍历构建新字符串,逻辑清晰可定制;④stringstream分词重组,自动跳过空白。根据需求选择合适方式。

在C++中删除字符串中的所有空格是一个常见需求,比如处理用户输入、格式化文本或准备数据时。有多种方式可以实现这一功能,下面介绍几种实用且高效的方法。
使用标准库算法 remove 和 erase(推荐)
这是最简洁且高效的方式,利用 std::remove 将空格移动到字符串末尾,再用 erase 删除它们。
#include #include #include std::string str = " hello world c++ ";str.erase(std::remove(str.begin(), str.end(), ' '), str.end());std::cout << str << std::endl; // 输出: helloworldc++
这种方式速度快,代码清晰,适用于只删除普通空格的情况。
使用 remove_if 删除多种空白字符
如果想同时删除制表符(t)、换行符(n)等其他空白字符,可以用 std::remove_if 配合 std::isspace。
立即学习“C++免费学习笔记(深入)”;
#include #include #include std::string str = " hello tn world ";str.erase(std::remove_if(str.begin(), str.end(), ::isspace), str.end());
注意:::isspace 是 C 风格函数,需包含 cctype 头文件。它能识别所有空白字符,比只删空格更全面。
手动遍历构建新字符串
如果你希望逻辑更直观,或需要自定义过滤条件,可以手动遍历并拼接非空格字符。
std::string str = " hello world ";std::string result;result.reserve(str.length()); // 预分配空间提升性能for (char c : str) { if (c != ' ') { result += c; }}str = result;
这种方法易于理解和修改,比如改成跳过多个连续空格或保留单词间单个空格。
使用 stringstream 进行分词重组
如果你想按单词提取再合并,可以借助 std::stringstream,自动跳过空白。
#include std::string str = " hello world c++ ";std::stringstream ss(str);std::string word, result;while (ss >> word) { result += word;}
这个方法天然忽略所有空白字符,适合用于“压缩”字符串为无空格形式。
基本上就这些常用方式。根据需求选择:追求简洁用 remove+erase;处理多类空白用 remove_if;需要控制逻辑用手动遍历;利用流特性可用 stringstream。不复杂但容易忽略细节,比如是否包含制表符、性能要求等。
以上就是c++++中如何移除字符串中的所有空格_c++删除字符串空格的多种实现方式的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1479740.html
微信扫一扫
支付宝扫一扫