解析數學表達式的庫-exprtk

github傳送門:https://github.com/ArashPartow/exprtkios

網站上有不少介紹,這裏先使用最簡單的方法。git

將exprtk.hpp加入到項目中就能夠了,而後包含這個頭文件。github

常規表達式:express

#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;
}

  編譯運行測試: 測試

對比了一下第二個計算的結果:網站

使用這個庫,寫一個圖形科學計算器,豈不是分分鐘的事情?可能最主要的工做被淪落爲拖控件和界面設計了……spa

不過也有坑爹的地方,那就是因爲使用了hpp文件的方式,這麼一個簡單的程序,編譯之後文件大小竟然是10.1M,設計

固然這只是這個應用的冰山一角,實際上,還有更高級更強大的功能,例如支持帶變量的表達式等,感興趣的話能夠摸索試試。blog

相關文章
相關標籤/搜索