error: cannot convert 'std::basic_string<char>::iterator ...' to 'const char* for argument '1' ...'
error: cannot convert 'std::basic_string<char>::iterator ...' to 'const char* for argument '1' ...'
我收到以下错误:
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*)'
出于某种原因,当我在 Mac...
这是弹出错误的实例之一:
SomeClass::SomeClass(string t, string art, Time dur) {
char chars[] = ",";
t.erase(std::remove(t.begin(), t.end(), chars[0]), t.end());
art.erase(std::remove(art.begin(), art.end(), chars[0]), art.end());
// Some more code ...
}
更具体地说,错误来自这一行:
t.erase(std::remove(t.begin(), t.end(), chars[0]), t.end());
有谁知道如何解决这个问题?
你忘记了 #include <algorithm>
,其中 std::remove
is located. Without that, your compiler only knows about this std::remove
(我在 Visual C++ 14 中得到了同样的错误),这是在间接包含 <cstdio>
header 中定义的。
编译器之间的不同行为是标准库实现的不同 #include
层次结构的结果。
我收到以下错误:
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*)'
出于某种原因,当我在 Mac...
这是弹出错误的实例之一:
SomeClass::SomeClass(string t, string art, Time dur) {
char chars[] = ",";
t.erase(std::remove(t.begin(), t.end(), chars[0]), t.end());
art.erase(std::remove(art.begin(), art.end(), chars[0]), art.end());
// Some more code ...
}
更具体地说,错误来自这一行:
t.erase(std::remove(t.begin(), t.end(), chars[0]), t.end());
有谁知道如何解决这个问题?
你忘记了 #include <algorithm>
,其中 std::remove
is located. Without that, your compiler only knows about this std::remove
(我在 Visual C++ 14 中得到了同样的错误),这是在间接包含 <cstdio>
header 中定义的。
编译器之间的不同行为是标准库实现的不同 #include
层次结构的结果。