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,
當然這只是這個應用的冰山一角,實際上,還有更高級更強大的功能,例如支持帶變量的表達式等,感興趣的話可以摸索試試。
