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语句。
条件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"。