任何人都可以帮我解决C ++中的if语句和字符串吗?

时间:2016-06-08 14:47:06

标签: c++

我在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;它仍然说是的。我已尝试用字符/字符来做,但我得到相同的输出。有人可以帮助我吗?

3 个答案:

答案 0 :(得分:6)

应该是input == "a" || input == "A"。您必须单独测试每个案例。现在,您的代码等同于(input == "a") || "A",其评估为true,因为"A"衰减为非零指针。

答案 1 :(得分:3)

"A"'B'在典型实施中始终如此。

您还应该将input与他们进行比较。

同样,std::stringchar的比较似乎不受支持,因此您还应该为bB使用字符串文字。

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