给定一个算式运算代码
时间: 2024-12-23 08:25:55 浏览: 5
在C++中,你可以使用基本的算术运算符(如+、-、*、/)来进行数学计算。如果你有一个字符串形式的算式,通常需要先解析成表达式,然后进行计算。这可以通过自定义函数或利用现成库(例如`std::stringstream`结合`std::tokens`)来实现。
以下是一个简单的例子,展示了如何使用`std::istringstream`和`std::stoi`处理整数算术表达式:
```cpp
#include <iostream>
#include <sstream>
// 定义一个函数来计算两个整数的算术表达式
int calculate(const std::string& expression) {
int result = 0;
std::istringstream iss(expression);
char operator_char; // 存储操作符
int num1, num2;
// 遍历表达式中的每个字符
iss >> num1;
while (iss >> operator_char && iss >> num2) {
switch (operator_char) {
case '+':
result += num2;
break;
case '-':
result -= num2;
break;
case '*':
result *= num2;
break;
case '/':
if (num2 != 0)
result /= num2;
else
throw std::invalid_argument("Division by zero is not allowed.");
break;
default:
throw std::runtime_error("Invalid operator encountered.");
}
}
// 检查是否还有剩余的数字
if (iss >> num1) {
throw std::runtime_error("Extra number found after expression.");
}
return result;
}
int main() {
try {
std::string expression = "5 + 3 * 2";
std::cout << "Result: " << calculate(expression) << std::endl;
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
```
这个示例中,我们首先从输入流中读取两个数字,然后检查下一个字符是否为合法的操作符。如果是,我们就根据操作符执行相应的运算。如果遇到非数字或无效的操作符,程序会抛出异常。
阅读全文