在c++中,从字符串中删除空格的首选方法是什么?我可以循环遍历所有字符,并建立一个新的字符串,但有更好的方法吗?
当前回答
std::string::iterator end_pos = std::remove(str.begin(), str.end(), ' ');
str.erase(end_pos, str.end());
其他回答
恐怕这是我能想到的最好的解决办法了。但是您可以使用reserve()预先分配所需的最小内存,从而稍微加快速度。你最终会得到一个新的字符串,它可能会更短,但占用相同数量的内存,但你将避免重新分配。
编辑:根据您的情况,这可能会比混淆字符产生更少的开销。
您应该尝试不同的方法,看看哪种方法最适合您:您可能根本没有任何性能问题。
std::string::iterator end_pos = std::remove(str.begin(), str.end(), ' ');
str.erase(end_pos, str.end());
删除所有空白字符,如制表符和换行符(c++ 11):
string str = " \n AB cd \t efg\v\n";
str = regex_replace(str,regex("\\s"),"");
我使用下面的工作周围很长时间-不确定它的复杂性。
s.erase (std::独特(s.begin (), s.end(),[](字符,字符f){返回(f = = ' ' | | ==' ');}), s.end ());
当你想删除字符' '和一些例如-使用
s . wipe (std:: unique (s .(初),s . end (), [] (char s, char (f) {return ((f = = ' | | s = = ' ') | | (f = = ' - ' | | s =='-'));}), s end ());
同样,如果你想删除的字符数量不是1,只需要增加||
但是正如其他人所提到的,“删除”这个习语似乎也不错。
你能使用Boost String算法吗?http://www.boost.org/doc/libs/1_35_0/doc/html/string_algo/usage.html#id1290573
erase_all(str, " ");
推荐文章
- 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++源文件?