2

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

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

假设用户将表达式写为

address = " 1+5+9" . 

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

4

2 回答 2

3

听起来您正在寻找与evalJavaScript 等价的 C++。不幸的是,C++ 没有。手动解析表达式是您能做的最好的事情。

如果您可以访问The C++ Programming Language一书,第 6 章将介绍如何编写一个简单的计算器程序,以解决您遇到的相同问题。

于 2012-06-19T12:59:57.887 回答
0

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

还有这些 Stack Overflow 帖子:

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

于 2012-06-19T13:04:38.483 回答