2014-02-20 231 views
1

我在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函数返回的迭代器不能使用擦除方法,但显然它应该工作。我该如何解决?

+0

请问您可以显示currentLine的声明。 – Borgleader

+3

发布一个简短的测试用例。 – juanchopanza

回答

6

您包括哪些标题?它看起来像编译器正在看到的唯一的std::remove<cstdio>(可能通过<iostream>或其他iostream heaaders之一包含的)中的一个。如果你包括<algorithm>,你应该找到合适的。