我的问题是我正在处理的当前应用程序需要使用char将int添加到另一个int。
代码可以更好地解释它。
const char operatorArray[3] = {'+', '-', 'x'};
int randOperator = rand() % 3;
char Operator = operatorArray[randOperator];
int a = 1;
int b = 2;
所以这里我有一个char的运算符(Operator)和两个整数的数字。
我想要(操作员b),例如1 + 2,并将该答案放在变量中。
答案 0 :(得分:0)
使用switch
语句似乎是合适的:
int c;
switch(Operator)
{
case '+':
c = a + b;
break;
case '-':
c = a - b;
break;
case 'x':
c = a * b;
break;
}
答案 1 :(得分:0)
您必须定义某些代码来定义您的运算符所执行的操作。幸运的是,C ++ 11可以帮助您:
#include <iostream>
#include <map>
#include <functional>
template<typename T>
T eval(char op, T a, T b)
{
static const std::map<char, std::function<T(T, T)> > operators = {
{ '+', [](T a, T b){return a + b; } },
{ '-', [](T a, T b){return a - b; } },
{ '/', [](T a, T b){return a / b; } },
};
auto it = operators.find(op);
return it->second(a, b);
}
int main()
{
std::cout << "3 + 4 = " << eval('+', 3, 4) << std::endl;
std::cout << "3.0 - 1.5 = " << eval('-', 3.0, 1.5) << std::endl;
std::cout << "(-2.f) / 8.f = " << eval('/', -2.f, 8.f) << std::endl;
return 0;
}
使用g++ -std=c++11 -Wall -Wextra -Werror main.cpp
进行编译。
输出:
3 + 4 = 7
3.0 - 1.5 = 1.5
(-2.f) / 8.f = -0.25