我如何将字符“+”转换为 + 以进行加法?我正在尝试做一些让用户输入运算符 +-*/ 然后打印运算符 b 的事情。
我可以只做一堆 if 语句,但想知道是否有办法更有效地做到这一点?
if (operator == "+") {cout << a + b;}
else if (operator == "-") {cout << a - b;}
ETC..
我如何将字符“+”转换为 + 以进行加法?我正在尝试做一些让用户输入运算符 +-*/ 然后打印运算符 b 的事情。
我可以只做一堆 if 语句,但想知道是否有办法更有效地做到这一点?
if (operator == "+") {cout << a + b;}
else if (operator == "-") {cout << a - b;}
ETC..
使用开关假设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;
}
您可以使用带有函数指针的映射。
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);
我相信在这种情况下使用开关会更好。否则,解决方案对我来说似乎没问题。
你也可以使用这样的地图,我认为在这种情况下效率并不重要。
cout << operators[op](a, b);