0

我如何将字符“+”转换为 + 以进行加法?我正在尝试做一些让用户输入运算符 +-*/ 然后打印运算符 b 的事情。

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

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

ETC..

4

4 回答 4

3

使用开关假设token是一个字符,您可以在其中获取运算符op1并且op2是 2 个操作数:

switch (token)
{
    case '/':
        val = op1 / op2;
        break;
    case '*':
        val = op1 * op2;
        break;
    case '+':
        val = op1 + op2;
        break;
    case '-':
        val = op1 - op2;
        break;
}
于 2013-10-08T08:09:36.023 回答
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);
于 2013-10-08T08:08:06.873 回答
0

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

于 2013-10-08T08:09:13.933 回答
0

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

cout << operators[op](a, b);
于 2013-10-08T08:12:24.160 回答