• 5152阅读
  • 1回复

“字符串转换为表达式”的问题 [复制链接]

上一主题 下一主题
离线hxy31861
 
只看楼主 正序阅读 楼主  发表于: 2009-05-04
“字符串转换为表达式”的问题
在QT中,如何将一个字符串转换为表达式,自动计算出结果。
例如:QString tempStr ="(15.2*2+30.0+13/2.0)/2";这个字符串自动转换为公式,最后计算出来结果来!
谢谢各位高手!
离线fcymk2

只看该作者 1楼 发表于: 2009-05-05
去了解一下 编译原理 吧...

贴一个 别人写的思路, 你参考一下吧

以下内容转自 CSDN 论坛:
==========================================================================================
我曾经在VB下做了一个简单的表达式分析,只能用于+、-、*、/、^、()的运算分析,没有用过这种函数的。我简单说一下我的主要思路:  
  1。主体用函数递归调用,并且在对表达式分析的时候要从右向左分析,(因为在处理象:9*3/3这样的表达式时候,有一个优先问题,下面再细说。)  
  2。注意其中的优先级问题。例如:()->^->*,/->+,-  
  3。从优先级低的地方把表达式分开成两段,之后递归对这两段再分析,直至到两个最简单的数相运算。  
  比如上面的那个9*3/3,从右开始:找到/后,分为:9*3和3,运算为/;对9*3分析后,分为:9和3,运算为*。然后,递归会帮你分析到底。  
  如果是从左到右的话,会出错的。
快速回复
限100 字节
 
上一个 下一个