C++的新手,使用"=="的字符串相等性问题

New to C++, Issues w/ String Equality using "=="

本文关键字:问题 字符串 使用 C++ 新手      更新时间:2023-10-16

我对c++有点陌生。我有Java和Python的使用经验。在Java中,有一个方便的函数".equals()"来比较两个字符串。在Java中当然不需要使用"==",因为它会测试两个对象是否完全相同,即在内存中是否有相同的位置。

然而,我在包括这个在内的各种网站上被告知,"=="是比较两个字符串是否相等的首选方式。如果您只是希望在两个字符串相等时执行一条语句,那么这似乎很好,因此

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

当尝试使用相同的操作符或"!"时,事情就没有那么大的意义了。="对两个字符串求值,如果不相等则执行一条语句。

我已经尝试过通过((first==second)==0)和(first != second)和输出是true(1)。下面的程序应该在输入"DONE"后终止,但这并没有发生。

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

正确的操作符是!=,应该可以工作。

下面是关于字符串比较操作符的文档:http://www.cplusplus.com/reference/string/string/operators/

这个应该可以工作:

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

当然,如果你不改变秒,它将永远循环。

你读到line而不是second

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

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

顺便说一句:

(first==second)==0

相同
(first==second)==false

相同
first != second