我想解析res =((a *(2 + b))/ c)+5.603+(6 *(d ^ 5))等表达式。我想只用c ++做。
答案 0 :(得分:4)
答案 1 :(得分:1)
Stroustrup解释了如何评估像((1*(2+3))/4)+5.603+(6*(11^5))
这样的表达式。基本上,您为所有子表达式构建评估树。
您的示例有三个额外步骤。在解析中,您必须注意变量a
,并且在评估时必须用其当前值替换变量。最后,您需要将结果分配给变量。
您可以使用std::map<std::string, double>
来保存变量名称和值。
答案 2 :(得分:0)
这里有一个可行方法的彻底处理:
http://www.ibm.com/developerworks/library/j-w3eval/index.html
代码在java中,但对C ++来说非常便于移植。