您好我试图将一个用Visual C ++制作的代码导入到linux中的gcc到gcc。我在rhs.erase行的这段代码中得到了一个错误。
void cleanString(std::string &rhs) {
char chars[] = "/-";
for (unsigned int i = 0; i < strlen(chars); ++i){
rhs.erase(std::remove(rhs.begin(), rhs.begin()+3, chars[i]), rhs.begin()+3);
}
}
这是错误:
../src/ApplicationMethods.cpp: In function ‘void RetrievalUtil::ApplicationMethods::cleanString(std::string&)’:
../src/ApplicationMethods.cpp:27:61: 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*)’
rhs.erase(std::remove(rhs.begin(), rhs.begin()+3, chars[i]), rhs.begin()+3);
我不是c ++方面的专家,我们将不胜感激。
答案 0 :(得分:8)
您需要#include <algorithm>
。否则你将无法获得所需的std::remove
,而是从stdio.h
中选取删除文件的函数(并期望const char*
参数)。