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

Conversion error in std::remove function

你好,我正在尝试将一个人在 visual studio 中用 c++ 编写的代码导入 linux 中的 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++ 专家,如有任何帮助,我们将不胜感激。

您需要 #include <algorithm>。否则你将得不到你想要的 std::remove,而是从 stdio.h 中获取删除文件的函数(并需要一个 const char* 参数)。