/*
输入:2*x+5*y+6*z
*/
#include <iostream>
#include <string>
#include "exprtk.hpp"
using namespace std;
double Calc( std::string& exp, std::vector<std::string>& list, std::vector<double>& param)
{
typedef exprtk::symbol_table<double> symbol_table_t;
typedef exprtk::expression<double> expression_t;
typedef exprtk::parser<double> parser_t;
symbol_table_t symbol_table;
expression_t expression;
parser_t parser;
for (size_t i = 0; i < list.size(); ++i) {
symbol_table.add_variable(list[i], param[i]);
}
//向符号表中添加一些常用的数学常量,例如pi(π)和e
symbol_table.add_constants();
expression.register_symbol_table(symbol_table);
parser.compile(exp, expression);
return expression.value();
}
int main() {
std::string exp = "2*x+5*y+6*z";
std::vector<std::string> list = { "x", "y", "z" };
std::vector<double> param = { 1, 2, 3 };
double result = Calc(exp, list, param);
std::cout << "Result: " << result << std::endl;
return 0;
}

#exprtk##c++##含参表达式计算#