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

在C++中删除字符串中的所有空格是一个常见需求,比如处理用户输入、格式化文本或准备数据时。有多种方式可以实现这一功能,下面介绍几种实用且高效的方法。
这是最简洁且高效的方式,利用 std::remove 将空格移动到字符串末尾,再用 erase 删除它们。
#include <algorithm> #include <string> #include <iostream> std::string str = " hello world c++ "; str.erase(std::remove(str.begin(), str.end(), ' '), str.end()); std::cout << str << std::endl; // 输出: helloworldc++
这种方式速度快,代码清晰,适用于只删除普通空格的情况。
如果想同时删除制表符(\t)、换行符(\n)等其他空白字符,可以用 std::remove_if 配合 std::isspace。
立即学习“C++免费学习笔记(深入)”;
#include <cctype> #include <algorithm> #include <string> std::string str = " hello \t\n 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;
这种方法易于理解和修改,比如改成跳过多个连续空格或保留单词间单个空格。
如果你想按单词提取再合并,可以借助 std::stringstream,自动跳过空白。
#include <sstream>
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++删除字符串空格的多种实现方式的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号