解析数学表达式的库-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,

当然这只是这个应用的冰山一角,实际上,还有更高级更强大的功能,例如支持带变量的表达式等,感兴趣的话可以摸索试试。

posted @ 2020-04-28 18:33  castor_xu  阅读(4201)  评论(0编辑  收藏  举报