将字符串计算为 C++ 中的表达式

Calculation of the string as expression in C++

本文关键字:表达式 C++ 字符串 计算      更新时间:2023-10-16

在我的项目中,我需要将用户的表达式输入作为字符串,然后显示表达式的结果。我接受以下输入

char address[100] = {NULL};
fgets(address, 100, stdin); //take the expression as input here

假设用户将表达式编写为

address = " 1+5+9" . 

我需要做的是显示表达式的结果。我可以通过分隔每个数字然后进行计算来做到这一点。但我只是想知道有没有更好的方法可以做到这一点?

听起来

你正在寻找一个C++,相当于JavaScript中的eval。 不幸的是,C++没有。 手动分析表达式是你能做的最好的事情。

如果你有访问C++编程语言一书,第6章将介绍如何编写一个简单的计算器程序,解决你遇到的相同问题。

几种方法可以做到这一点,其中最流行的方法之一,在我个人看来,最优雅的方式是使用递归下降解析器。网络上有很多有用的指南可以做到这一点。一个简单的谷歌搜索引导我:

  • 创建递归下降分析器
  • 递归下降分析
  • C++中的递归下降解析器
  • 按递归降序解析表达式(包含一些有用的伪代码)

还有这些堆栈溢出帖子:

  • 递归下降解析器问题
  • 递归下降解析器

简单地分隔数字然后进行计算的问题在于当您允许乘法并且通常需要考虑运算符的顺序时会出现的问题。