为什么str!=“ hello” &&“再见”不起作用?

lil*_*ton 2 c++ string function

如果输入字符串“ hello”或“再见”我试图退出“ do”功能,此功能仅适用于“ hello”而不是“再见”。谁能向我解释我的功能有什么问题?另外,如果有更好的方法,我也希望看到。谢谢

“你好” || “再见”“你好”,“再见”

#include <iostream>
#include <string>



int main()
{
    std::string str;
    do {

        std::cout << "Say Hello, sir.";
        std::cin >> str;

    } while (str != "Hello" && "Goodbye");

    std::cout << "You're rude, bro";
}
Run Code Online (Sandbox Code Playgroud)

我希望在输入“ Hello”或“ Goodbye”之后退出“ do”语句并继续执行cout语句。

Eri*_*hil 7

条件str != "Hello" && "Goodbye"是有效的(str != "Hello") && "Goodbye"。该&&运营商不加入的多个操作数!=。它是一个完全独立的运算符。

的第一个操作&&str != "Hello",比较str"Hello",这是你想要的。第二个操作数"Goodbye"并不是您想要的。

"Goodbye"是的操作数时&&,它将转换为bool。(详细地,此字符串文字首先转换为指向其第一个字符的指针,然后bool转换为。)将非空指针转换为boolis的结果true

因此str != "Hello" && "Goodbye"与相同str != "Hello" && true,与相同str != "Hello"

您要的条件是str != "Hello" && str != "Goodbye"