关于muparserx 计算库的使用
许多应用程序需要解析数学表达式。比如在ug二次开发中,标准件库的开发,需要使用解析数学表达式,该库的主要目的是提供一种快速简便的方法。
muParser是一个用C ++编写的可扩展的高性能数学表达式解析器库。
它的工作原理是将数学表达式转换为字节码并预先计算表达式的常量部分。
网上大多数都是关于它的 C++ 外部库函数的介绍,几乎没有关于它类的成员函数的介绍......
这里就做个记录,最近的项目里也用到了它。
包含头文件
#include "parser/mpParser.h"
#include "parser/mpDefines.h"
#include "parser/mpTest.h"
using namespace std;
using namespace mup;
以下是示例代码
CString calcStr; GetDlgItem(IDC_EDIT3)->GetWindowText(calcStr); if (calcStr==_T("")) { GetDlgItem(IDC_EDIT4)->SetWindowText(_T("0.0")); return; } try{ ParserX parser; int rowCount=m_list.GetItemCount(); for (int i=0;i<rowCount;i++) { parser.DefineConst((string_type)m_list.GetItemText(i,0), (float_type)(_ttof(m_list.GetItemText(i,1)))); } //此方法少用 //Value a((float_type)1.0); //parser.DefineVar(_T("a"), Variable(&a)); Value val; parser.SetExpr((string_type)calcStr); // implicitely create reverse polish notation val = parser.Eval(); //double ruselt=(double)val.GetFloat(); CString temp; temp.Format(_T("%f"),(double)val.GetFloat()); GetDlgItem(IDC_EDIT4)->SetWindowText(temp); } catch(...){ GetDlgItem(IDC_EDIT4)->SetWindowText(_T("计算错误!")); }
此处内容已隐藏,评论后刷新即可查看!
转载请注明出处: 芝麻开花
本文的链接地址: http://www.vmould.cn/?post=184
下一篇
正则表达式regex
您可能对以下文章感兴趣
发表评论 取消回复