没有匹配的成员函数调用“擦除”

Posted

技术标签:

【中文标题】没有匹配的成员函数调用“擦除”【英文标题】:No matching member function for call to "erase" 【发布时间】:2017-06-08 06:42:48 【问题描述】:

我尝试调用 erase() 函数来删除字符串中的空格,用于将字符串转换为整数的函数。相同的代码在 main() 中有效,但在函数内部却没有。我该如何修复它?

int convert(const string &line)


for (int i=0;i<line.length();i++)

    char wh=' ';
    if(line.find(wh))
        line.erase(find(line.begin(),line.end(),' '));

    //cout<<line[i];


if(line.length()==0)
    return 0;
int a=line[line.length()-1]-'0';
int b=convert(line.substr(0,line.length()-1))*10;
return a+b; 

【问题讨论】:

line 被声明为const;你不能修改它。 【参考方案1】:

尝试逐行传递值而不是 const 引用。 const ref 不能更改

int convert(std::string line)

【讨论】:

谢谢你,对我很有帮助。【参考方案2】:

尝试从 convert() 中删除 const。 任何用 const 声明的东西都不能修改。

【讨论】:

以上是关于没有匹配的成员函数调用“擦除”的主要内容,如果未能解决你的问题,请参考以下文章