如何在if条件下使用字符值(c ++)

时间:2017-11-30 11:18:17

标签: c++ loops while-loop character

    {
        cout << "type 3 to add ,type 1 to multiply,type division to divide,type 2 to subtract" << endl;

        cin >> function;

        if (function == 1)
        {
            multiply();
        }

        else if (function == 2)
        {
            subtract();
        }
        else if (function == 3)
        {
            add();
        }
        else if (function == 4)
        {
            division();
        }

        cout << "press x to quit or anything else to restart " << endl;
        cin >> input;
    } while (input !='x');

    system("pause");
    return 0;
}

在此代码中,我无法使用if获得字符值 例如 - 如果(function=='add')它不起作用 如果我使用if(function='add'),内部的所有内容都会被跳到最后一个cout,其中包含

  

按x退出或其他任何内容重新启动

2 个答案:

答案 0 :(得分:3)

'add'多字符文字,是int类型(请注意单引号字符)。你几乎肯定不想这样做,因为那时你处于实现定义的行为的阴暗水域。

如果您希望能够阅读字符串,那么为什么不使用std::string作为function的类型,并使用if (function == "add")&amp; c。 ?你甚至可以保留你的符号cin >> function

答案 1 :(得分:0)

正如Bathsheba所建议的那样,您可以使用std :: string实现此功能。你有一个如何做到这一点的例子。

#include <iostream>
#include <string>

void multiply() {
    std::cout << "multiplication called" << std::endl;
}
void add() {
    std::cout << "add called" << std::endl;
}
void subtract() {
    std::cout << "substract called" << std::endl;
}
void division() {
    std::cout << "division called" << std::endl;
}

int main()
{
    using namespace std;
    string input;

    do {
        cout << "type add, multiply, division, or subtract" << endl;
        cin >> input;

        if (input == "multiply") {
            multiply();
        }
        else if (input == "substract") {
            subtract();
        }
        else if (input == "add") {
            add();
        }
        else if (input == "division") {
            division();
        }
        else {
            cout << "You inputed: " << input << endl;
            cout << "Command not recognized, please try again" << endl;
            continue;
        }

        cout << "press x to quit or anything else to restart ";
        cin >> input;

    } while (input != "x");

    return 0;
}