我如何将char“+”转换成+加法?我正在尝试做一些用户输入操作员+ - * /然后打印操作员b。
我可以做一堆if语句,但是想知道是否有办法更有效地做到这一点?
if (operator == "+") {cout << a + b;}
else if (operator == "-") {cout << a - b;}
等。
答案 0 :(得分:3)
使用一个开关,假设token
是一个char,你得到运算符,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;
}
答案 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);