有没有办法可以将运算符作为char“+”转换为算术的实际运算符?

时间:2013-10-08 08:05:45

标签: c++

我如何将char“+”转换成+加法?我正在尝试做一些用户输入操作员+ - * /然后打印操作员b。

我可以做一堆if语句,但是想知道是否有办法更有效地做到这一点?

if (operator == "+") {cout << a + b;}
else if (operator == "-") {cout << a - b;}

等。

4 个答案:

答案 0 :(得分:3)

使用一个开关,假设token是一个char,你得到运算符,op1op2是2个操作数:

switch (token)
{
    case '/':
        val = op1 / op2;
        break;
    case '*':
        val = op1 * op2;
        break;
    case '+':
        val = op1 + op2;
        break;
    case '-':
        val = op1 - op2;
        break;
}

答案 1 :(得分:1)

您可以使用带有函数指针的地图。

int addition(int a, int b){
  return a + b;
}

std::map<char, int(*)(int, int)> operators;
operators.insert(make_pair('+', addition));

char c = getch();
int first_operand = 10;
int second_operand = 20;

int result = operators[c](first_operand, second_operand);

答案 2 :(得分:0)

我认为在这种情况下使用开关更好。否则解决方案对我来说似乎没问题。

答案 3 :(得分:0)

您也可以使用这样的地图,在这种情况下,我认为效率并不重要。

cout << operators[op](a, b);