为什么我的算子==没有匹配

时间:2017-07-21 04:22:18

标签: c++

if(response=='y'){
    cout << "great. file saved, please send the file to me and you'll receive the package information and status.";
}
else if(response=='n'){
    cout << "exiting. please do it again correctly, thanks!";
}

上面的代码给出了以下编译错误:

  

错误:不匹配&#39;运营商==&#39; (操作数类型是&#39; std :: string {aka   性病:: basic_string的}&#39;和&#39; char&#39;)|

我不知道问题所在。

有人可以就此提出一些建议吗?谢谢!

2 个答案:

答案 0 :(得分:3)

'y'是字符文字,没有转化运算符将std::string与字符进行比较。有一个运算符可以与其他std::string个对象或C风格的字符串进行比较,因此使用"y""n"代替它。

答案 1 :(得分:1)

'n'charresponse是一个字符串。字符串是字符数组。我不知道你是如何为response分配价值的,但是如果你从一个istream中拉出来,你就必须先消毒它才能使用它。然后,您必须使用

if(response=="y") //note the double quotes

将整个字符串与长度为1的字符串进行比较

if(response[0]=='y')

比较字符串中的一个字符。