错误:无法将'std :: basic_string <char> :: iterator ...'转换为'const char * for parameter'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上工作时,我的程序可以完美地编译...但是,一旦我使用Linux机器,此错误就会在多个地方弹出。

这是错误弹出的实例之一:

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的位置。否则,您的编译器仅会知道这一点std::remove(我在Visual C ++ 14中遇到相同的错误),它是在间接包含的<cstdio>标头中定义的

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C ++错误:无法将'std :: basic_string <char>'转换为'const char *'

错误:请求从“const char”转换为非标量类型“std::string”{aka 'std::__cxx11::basic_string<char>'}

传递路径作为参数时,出现“错误:无法将'std :: __ cxx11 :: string * {aka std :: __ cxx11 :: basic_string <char> *}'转换为'const char *'错误

错误:无法从'std :: string * {aka std :: basic_string <char> *}'转换为'std :: string {aka std :: basic_string <char>}'||

错误:无法转换“std::__cxx11::basic_string<char>::iterator”

无法将“std::__cxx11::string {aka std::__cxx11::basic_string<char>}”转换为“LPCSTR {aka const char*}”

错误:初始化时无法将'std :: string {aka std :: basic_string <char>}'转换为'char *'

错误无法将赋值中的'std :: string {aka std :: basic_string <char>}'转换为'char'-C ++

错误:无法将'tab'从'vector <std :: vector <std :: __ cxx11 :: basic_string <char> >>'转换为'vector <std :: __ cxx11 :: basic_string <char >>

如何将std :: string转换为const char *或char *?

错误无法在赋值中将 'std::string* {aka std::basic_string<char>*}' 转换为 'node*'

无法将参数'2'的'std :: string {aka std :: basic_string <char>}'转换为'char *'到'int Save(int,char *)'

C ++“错误:将'const std :: map <int,std :: basic_string <char>>'作为...的'this'参数传递”

将const char **转换为std :: vector <const char *>

将 const char 转换为 std::string 作为标题

在std :: __ cxx11 :: basic_string <char,std :: char_traits <char>,...,std :: allocator <char>> const&)中获取未知的分段错误“(地址)const()const()

无法将参数1从char转换为strcmp的const char

错误无法将“coll”(类型“std::__cxx11::list<char>”)转换为“const char&”

错误:无法将“ const char **”转换为“ const char(*)[64]”

无法从const char *转换为const char *&

错误:无法将参数1的const字符串转换为const char *到size_t strlen(const char *)

没有匹配的函数来调用'replace(std :: basic_string <char> :: iterator,std :: basic_string <char> :: iterator,char,int)'|

无法将参数1从'const char [11]'转换为'LPCWSTR'

如何将 const char& 转换为 const std::string&?

错误:类型为“ std :: __ 1 :: basic_string <char>”不提供调用运算符

std :: string强制转换为const char *在std :: unordered_set <const char *>中找不到

不断收到此错误:无法从 'int' 转换为 'std::__cxx11::string' {aka 'std::__cxx11::basic_string<char>'}|

如何将“ std :: vector <std :: string>”转换为“ const char * array”?

将char *转换为std :: string