解析数学表达式的库-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[1]<<" \"expression\""<<endl;
		return -1;
	}
	cout<<argv[1]<<"="<<eval(argv[1])<<endl;
   	
	return 0;
}

  编译运行测试: 

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

使用这个库,写一个图形科学计算器,岂不是分分钟的事情?可能最主要的工作被沦落为拖控件和界面设计了……

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

猜你喜欢

转载自www.cnblogs.com/castor-xu/p/12796302.html