解析数学表达式的库-exprtk
github传送门:https://github.com/ArashPartow/exprtk
网站上有很多介绍,这里先使用最简单的方法。
将exprtk.hpp加入到项目中就可以了,然后包含这个头文件。
常规表达式:
#include <iostream>
#include "exprtk.hpp"
using namespace std;
double eval(string s)
{
exprtk::expression<double> expr;
exprtk::parser<double> p;
p.compile(s,expr);
return expr.value();
}
int main(int argc,char** argv)
{
if(argc!=2)
{
cout<<"Usage:"<<argv[0]<<" \"expression\""<<endl;
return -1;
}
cout<<argv[1]<<"="<<eval(argv[1])<<endl;
return 0;
}
编译运行测试:

对比了一下第二个计算的结果:

使用这个库,写一个图形科学计算器,岂不是分分钟的事情?可能最主要的工作被沦落为拖控件和界面设计了……
不过也有坑爹的地方,那就是由于使用了hpp文件的方式,这么一个简单的程序,编译以后文件大小居然是10.1M,
当然这只是这个应用的冰山一角,实际上,还有更高级更强大的功能,例如支持带变量的表达式等,感兴趣的话可以摸索试试。

浙公网安备 33010602011771号