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
转换为。)将非空指针转换为bool
is的结果true
。
因此str != "Hello" && "Goodbye"
与相同str != "Hello" && true
,与相同str != "Hello"
。
您要的条件是str != "Hello" && str != "Goodbye"
。