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