我在c ++中使用if语句和字符串/字符时遇到了一些麻烦。这是我的代码:
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout << "-----------------------------" << endl;
cout << "|Welcome to Castle Clashers!|" << endl;
cout << "-----------------------------" << endl;
cout << "Would you like to start?" << endl;
string input;
cout << "A. Yes ";
cout << "B. No " << endl;
cin >> input;
if(input == "a" || "A"){
cout << "Yes" << endl;
}else{
if(input == 'b' || 'B'){
return 0;
}
}
return 0;
}
在我的if语句中,它检查字符串输入是否等于yes,如果不是,则应该转到else语句。这是故障开始的地方,一旦我在控制台中运行我的程序,当我输入除了&#34; a&#34;或&#34; A&#34;它仍然说是的。我已尝试用字符/字符来做,但我得到相同的输出。有人可以帮助我吗?
答案 0 :(得分:6)
应该是input == "a" || input == "A"
。您必须单独测试每个案例。现在,您的代码等同于(input == "a") || "A"
,其评估为true
,因为"A"
衰减为非零指针。
答案 1 :(得分:3)
"A"
和'B'
在典型实施中始终如此。
您还应该将input
与他们进行比较。
同样,std::string
与char
的比较似乎不受支持,因此您还应该为b
和B
使用字符串文字。
Try this:
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout << "-----------------------------" << endl;
cout << "|Welcome to Castle Clashers!|" << endl;
cout << "-----------------------------" << endl;
cout << "Would you like to start?" << endl;
string input;
cout << "A. Yes ";
cout << "B. No " << endl;
cin >> input;
if(input == "a" || input == "A"){
cout << "Yes" << endl;
}else{
if(input == "b" || input == "B"){
return 0;
}
}
return 0;
}
答案 2 :(得分:2)
C没有“真正的”布尔值 - 相反,任何等于0的东西都被认为是 false ,任何不同的东西都被认为是 true 。虽然C ++引入了bool
类型,但出于兼容性原因,它仍然保留旧的C行为。
正如Cornstalk所说,您的(input == "a" || "A")
与((input == "a") || ("A"))
和"A" != 0
相同,所以它始终评估为true
- 这就是为什么它总会进入如果阻止。你想要的是:
if (input == "a" || input == "A")
同样适用于下一个语句(将其与'B'进行比较),但是还有一个额外的问题:你使用单引号(')而不是双引号(“),这使它成为{ {1}}而不是char
。要使两个变量都是相同的类型,只需使用双引号,它最终会像这样:
string