【发布时间】:2013-09-18 14:54:32
【问题描述】:
我正在尝试使用如下所示的简单表达式,结果应该是 z 的值变为 1。但是似乎没有发生任何关于如何解决此问题的建议?
template<typename t>
void MyTestB()
{
t x = 1.0;
t z = 0;
std::string e = "if((x + 2) == 3){z=1;}";
exprtk::symbol_table<t> symbol_table;
symbol_table.add_variable("x",x);
symbol_table.add_variable("z",z);
exprtk::expression<t> expression;
expression.register_symbol_table(symbol_table);
exprtk::parser<t> parser;
parser.compile(e,expression);
t y = expression.value();
std::cout << z;
}
程序确实在 y = NAN 处结束(这是可以理解的,因为表达式是一个条件语句)但是 z 仍然是 0。我原以为它会变成 1
【问题讨论】:
-
“似乎没有发生任何事情”是一个有点模糊的问题描述。你怎么称呼这个函数?你得到错误的输出或根本没有输出?程序是完成还是挂起?
-
没有模板也能用吗? (例如将
t修复为int) -
看看网上的例子,你的字符串看起来应该是这样的:“if((x+2) == 3, z := 1, 0)”。你有没有尝试过这样的事情?
-
@Taylor 是的,成功了。你能把它放在答案中吗