用字符串储存表达式C++
时间: 2024-10-21 15:06:44 浏览: 30
c++ 字符串分割util
在C++中,你可以使用字符串(std::string)来储存数学表达式,特别是当你需要动态构建、解析或者操作复杂的表达式时。这通常涉及到字符串处理和可能的解析算法,如词法分析和语法分析(也称为解析)。例如,可以使用栈或解析树数据结构来解析基于某种运算符优先级规则(如中缀、前缀或后缀表示法)的表达式。
一种常见的方法是使用eval函数或者创建自定义解析函数,它们会接受存储表达式的字符串,然后按照特定的规则计算结果。例如,你可以使用`std::stringstream`将字符串转换成`std::istringstream`,以便逐个读取字符并执行相应的操作。
```cpp
#include <iostream>
#include <sstream>
#include <string>
double evaluateExpression(const std::string& expr) {
std::istringstream iss(expr);
double result;
iss >> result; // 开始从第一个数字开始读取
while (iss >> result) { // 遇到空格或其他分隔符继续读取
char op;
iss >> op;
switch (op) {
case '+':
result += iss >> result;
break;
case '-':
result -= iss >> result;
break;
// 其他算术运算符...
}
}
return result;
}
int main() {
std::string expr = "5 + 3 * 4";
double res = evaluateExpression(expr);
std::cout << "Result: " << res << std::endl;
return 0;
}
```
阅读全文