C ++新手,使用" =="来解决字符串平等问题

时间:2015-09-07 00:29:33

标签: c++ string object

我对C ++有些新意。我有Java和Python的经验。在Java中,有一个方便的功能" .equals()"比较两个字符串。你当然不会使用" =="在Java中,因为它测试两个对象是否完全相同,I.E。在记忆中占有相同的位置。

然而,我在各种网站上都被告知,包括这个,#34; =="是比较两个字符串是否相等的首选方法。如果您只是想要在两个字符串相等的情况下执行语句,那么这似乎很好,因此

string one = "foo"
string two = "foo"

if (one == two)
{
    cout << "They are equal";
}

在尝试使用相同的操作员时,事情并没有多大意义,或者&#34;!=&#34;评估两个字符串并在它们不相等时执行一个语句。

我试过通过((first == second)== 0)和(first!= second)这样做,输出为真(1)。下面的程序应该终止一次&#34; DONE&#34;是键入的,但这不会发生。

string first = "DONE";
string second = "";
while ((first==second)==0)
{
    cout << "Enter a line of text: ";
    cin >> second;
    cout << ((first==second)==0);
}

2 个答案:

答案 0 :(得分:2)

正确的运算符是!=,应该有效。

以下是字符串比较运算符的文档:http://www.cplusplus.com/reference/string/string/operators/

这应该有效:

string first = "DONE";
string second = "";
while (first != second)
{
    ...
}

当然,如果你实际上没有改变第二,它将永远循环。

答案 1 :(得分:0)

您已阅读line而不是second

如果你之后仍然遇到麻烦,请打印出你从stdin读取的内容,以确保你不会从每次调用的stdin中获取一个字符,或者包含末尾的换行符(或类似内容)

cout << "'" << second << "'\n";

BTW:

(first==second)==0

相同
(first==second)==false

相同
first != second