C++ 错误:无法转换';标准::基本字符串<;char>;::迭代器…';至';参数'的常量字符*;1'';

C++ 错误:无法转换';标准::基本字符串<;char>;::迭代器…';至';参数'的常量字符*;1'';,c++,compiler-errors,char,std,gnu,C++,Compiler Errors,Char,Std,Gnu,我得到以下错误: 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*)' 更具体地说,错误来自这一行: t.erase(std::rem

我得到以下错误:

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*)'
更具体地说,错误来自这一行:

t.erase(std::remove(t.begin(), t.end(), chars[0]), t.end());
有人知道如何解决这个问题吗

您忘记了
#include位于。没有这个,编译器只知道(我用Visual C++ 14得到相同的错误),它是间接包含在<代码> <代码>标题中的。< /P>

编译器之间的不同行为是标准库实现的不同
#include
层次结构的结果。

它正在工作。你能生成一个吗?它没有选择正确的删除功能,你包括了吗?(遗憾的是,中还有另一个删除)正确读取编译器错误。你遗漏了问题标题中的重要部分。它告诉您它正在尝试调用
int remove(const char*)
,这显然不是您想要调用的函数。
t.erase(std::remove(t.begin(), t.end(), chars[0]), t.end());