在c++中,从字符串中删除空格的首选方法是什么?我可以循环遍历所有字符,并建立一个新的字符串,但有更好的方法吗?
当前回答
string removeSpaces(string word) {
string newWord;
for (int i = 0; i < word.length(); i++) {
if (word[i] != ' ') {
newWord += word[i];
}
}
return newWord;
}
这段代码基本上接受一个字符串并遍历其中的每个字符。然后检查该字符串是否为空白,如果不是,则将该字符添加到新字符串中。
其他回答
你能使用Boost String算法吗?http://www.boost.org/doc/libs/1_35_0/doc/html/string_algo/usage.html#id1290573
erase_all(str, " ");
如果你想用一个简单的宏来做到这一点,这里有一个:
#define REMOVE_SPACES(x) x.erase(std::remove(x.begin(), x.end(), ' '), x.end())
当然,这假设您已经执行了#include <string>。
这样称呼它:
std::string sName = " Example Name ";
REMOVE_SPACES(sName);
printf("%s",sName.c_str()); // requires #include <stdio.h>
恐怕这是我能想到的最好的解决办法了。但是您可以使用reserve()预先分配所需的最小内存,从而稍微加快速度。你最终会得到一个新的字符串,它可能会更短,但占用相同数量的内存,但你将避免重新分配。
编辑:根据您的情况,这可能会比混淆字符产生更少的开销。
您应该尝试不同的方法,看看哪种方法最适合您:您可能根本没有任何性能问题。
string removeSpaces(string word) {
string newWord;
for (int i = 0; i < word.length(); i++) {
if (word[i] != ' ') {
newWord += word[i];
}
}
return newWord;
}
这段代码基本上接受一个字符串并遍历其中的每个字符。然后检查该字符串是否为空白,如果不是,则将该字符添加到新字符串中。
从gamedev
string.erase(std::remove_if(string.begin(), string.end(), std::isspace), string.end());
推荐文章
- bash:错误的替换
- 未定义对静态constexpr char的引用[]
- 在c#中检查字符串是否只包含数字的最快方法
- 在c++中,restrict关键字是什么意思?
- c++中类似于java的instanceof
- 我怎么能强迫一个长字符串没有任何空白被包装?
- include_directories和target_include_directories在CMake中的区别是什么?
- 转换JSON字符串到JSON对象c#
- std::make_pair与std::pair的构造函数的目的是什么?
- 将查询字符串解析为数组
- 如何追加一个字符到std::字符串?
- 删除字符串中的字符列表
- 在Java中转换float为String和String为float
- 为什么要在c++中使用嵌套类?
- 如何处理11000行c++源文件?