std :: remove函数中的转换错误

时间:2015-02-20 19:08:09

标签: c++ c++11 gcc g++

您好我试图将一个用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 ++方面的专家,我们将不胜感激。

1 个答案:

答案 0 :(得分:8)

您需要#include <algorithm>。否则你将无法获得所需的std::remove,而是从stdio.h中选取删除文件的函数(并期望const char*参数)。