我对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);
}
答案 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