错误:'operator =='不匹配,我该怎么办?

时间:2014-07-18 13:45:15

标签: c++

我想创建一个接收3个字符串类型参数s,oldval,newval的函数,使用iterator,insert and eraseoldval中的s替换为newval。 当我编译它时,error :no match for the operator == in...

string &foo(string &s,string &oldval,string &newval)
{
    string::iterator it=s.begin();
    while(it!=s.end())
    {
        if(*it==oldval)
        {
            it=s.erase(it);
            it=s.insert(it,newval);
        }
        ++it;
    }
    return &s;
}

3 个答案:

答案 0 :(得分:1)

it正在迭代字符串的字符; *it是一个字符。您可以将其与另一个字符进行比较,但不能与字符串进行比较。

oldvalnewval应该有char类型,而不是string;或者你需要更复杂的逻辑来在输入中查找和替换子串,而不是单个字符。成员函数findreplace可能对此有所帮助。

请注意,替换单个字符就像*it = newval;一样简单,不需要乱七八糟地删除和插入字符。

答案 1 :(得分:1)

字符串迭代器"指向"到一种char(构成std :: string类型的std :: basic_string的模板参数),但是你要使用==将该字符与字符串(oldval)进行比较。

std :: string没有char的重载比较运算符。

答案 2 :(得分:0)

尤,

我看到了你的问题。 " S"是一个字符串。 Wenn你使用指针,指针只指向一个字符。这意味着,只选择了一个字符。如何将字符与字符串进行比较?编译器会告诉你, "与运营商不匹配==在..." 。 你需要查看网站: http://www.cplusplus.com/reference/string/string/find/

祝你好运

张德伦