使用erase和remove删除字符串中的字符

时间:2014-02-20 16:55:54

标签: c++ string stl-algorithm

我在Stack Overflow和其他论坛上发现了这个解决方案,用于从字符串中删除字符。假设我想从我要做的字符串中删除空格:

currentLine.erase( std::remove( currentLine.begin(), currentLine.end(), ' ' ), currentLine.end() );

其中currentLine是字符串的名称。

这种事似乎适用于人,但如果我使用它,我会得到:

/local/yrq12edu/Desktop/Bens_C++_Utilities/simuPOPtoFASTA/simuPOP2FASTA.cpp|54|error: cannot convert 'std::basic_string<char>::iterator {aka __gnu_cxx::__normal_iterator<char*, std::basic_string<char> >}' to 'const char*' for argument '1' to 'int remove(const char*)'|

作为编译错误。 我认为它与std :: remove函数返回的迭代器有关,不能使用erase方法,但显然它应该可以工作。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

您包含哪些标题?看起来编译器看到的唯一std::remove<cstdio>中的<iostream>(可能包括<algorithm>或其他iostream heaader)。如果你包含{{1}},你应该找到合适的人。