Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误:与‘;不匹配;运算符==’,;我该怎么办?;_C++ - Fatal编程技术网

C++ 错误:与‘;不匹配;运算符==’,;我该怎么办?;

C++ 错误:与‘;不匹配;运算符==’,;我该怎么办?;,c++,C++,我想创建一个函数,该函数接收3个字符串类型参数s、oldval、newval,使用迭代器插入并擦除,将s中的oldval替换为newval。 当我编译它时,会出现错误:运算符==in…不匹配 string &foo(string &s,string &oldval,string &newval) { string::iterator it=s.begin(); while(it!=s.end()) { if(*it==old

我想创建一个函数,该函数接收3个字符串类型参数
s、oldval、newval
,使用
迭代器插入并擦除
,将
s
中的
oldval
替换为
newval
。 当我编译它时,会出现
错误:运算符==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;
}

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

oldval
newval
应具有类型
char
,而不是
string
;或者,您需要更复杂的逻辑来查找和替换输入中的子字符串,而不是单个字符。成员的功能可能会有所帮助

请注意,替换单个字符非常简单,如
*it=newval,无需纠结于擦除和插入字符。

字符串迭代器“指向”一种字符类型(构成std::string类型的std::basic_string的模板参数),但您使用==将该字符与字符串(oldval)进行比较

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

Viktor

我看到你的问题了。 “s”是一个字符串。使用指针时,指针只指向一个字符。这意味着,只选择了一个字符。如何将字符与字符串进行比较?编译器会告诉你, “运算符==在…”中不匹配。 您需要查看以下网站:

致意


Dehlen Zhang

您正在比较一个
字符
和一个
字符串
,请再次阅读代码。你想做什么?
if(*it==oldval)
是“if(character==string)”这没有意义为什么你认为字符和字符串之间的相等比较会起作用?顺便说一句:错误消息应该列出你试图比较的实际类型…对不起,伙计们,我知道了,谢谢。谢谢!顺便说一句,字符可以是一个词?或者只是一个字母?这让我感到困惑。对不起,我知道这个问题很愚蠢。