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*
参数)。
你好,我正在尝试将一个人在 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*
参数)。