本题给出一个字符串,字符串中只有非负整数以及‘+’,‘-’,‘*’,‘/’四种运算符号,要求输出字符串的运算结果。
该题有两个难点,一是整数的长度不一样,对于该点用字符串流解决。
二是一个整数后的运算符号是‘*’,‘/’时,要先进行乘除运算,因此对于一个新的整数,用变量temp暂时存储。
代码如下:
int calculate(string s) {
istringstream in('+' + s + '+');
long long total = 0, temp = 0, n;
char op;
while (in >> op) {
if (op == '+' or op == '-') {
total += temp;
in >> temp;
temp *= 44 - op;
} else {
in >> n;
if (op == '*')
temp *= n;
else
temp /= n;
}
}
return total;
}