C++ 错误:与‘;不匹配;运算符==’,;我该怎么办?;
我想创建一个函数,该函数接收3个字符串类型参数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
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)”这没有意义为什么你认为字符和字符串之间的相等比较会起作用?顺便说一句:错误消息应该列出你试图比较的实际类型…对不起,伙计们,我知道了,谢谢。谢谢!顺便说一句,字符可以是一个词?或者只是一个字母?这让我感到困惑。对不起,我知道这个问题很愚蠢。