在条件表达式中使用字符串时出错

时间:2014-02-08 07:19:28

标签: c++ string if-statement

我是编程和c ++的新手

以下是我遇到的问题的图片:

http://i.imgur.com/tGJR3pO.jpg Error Message 早些时候(不在图片中),我写了“字符串标准;”然后提示用户输入“gas”或“total”。 我搜索了问题,但无法找到导致此错误的原因。有人可以向我解释是什么导致它以及我如何解决它?

2 个答案:

答案 0 :(得分:0)

在c ++中你不能用这种方式比较字符串。您比较他们的地址而不是他们的值。尝试Google'字符串比较c ++'

==运算符的默认行为是比较两个对象地址(如果它们完全相同)。如果你有2个实例,一个存储在0xff0而另一个存储在0xfff - 压缩是if(0xff0 == 0xfff),当然答案是假的。 比较用于比较它们的值 - 在这种情况下 - 如果字符串的内容(“gas”)等于其他字符串内容。有趣的是你可以覆盖==方法按你想要的方式行事 - 在字符串的情况下(如相关问题所示)==就像比较一样

答案 1 :(得分:0)

请查看criteria的课程。

假设: criteria的班级为MyCriteria

在您的班级MyCriteria中,函数operator==(const char* pc)未返回正确的值。

您需要为类MyCriteria实现一个函数,如下所示:

bool operator==(const char* pc);

PS:我想函数operator==会在您的班级void中返回MyCriteria。像这样:

class MyCriteria
{
public:
    void operator==(const char* pc)
    {
        // code
    }
};