gpt4 book ai didi

c++ - QScriptEngine : bad expression considered valid

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:48:52 25 4
gpt4 key购买 nike

我需要实现一个简单的数学表达式计算器,例如 1+2*(3.4 + 0.1)

我认为使用

实现这些东西会很容易
QScriptEngine::evaluate()

但是有一个问题:一些无效的表达式被认为是有效的并且被评估为某些东西而不是产生错误。

例子:

QString expression = "1 + 2*("; // <---- wrong expression

auto checkResult = QScriptEngine::checkSyntax(expression);
if (checkResult.state() == QScriptSyntaxCheckResult::Valid)
{
QScriptEngine engine;
auto scriptResult = engine.evaluate(expression);

if (scriptResult.isValid() && scriptResult.isNumber())
{
double value = scriptResult.toNumber(); // <---- the value is 3.0, instead of an error
}
}

所以我的问题是:我是否遗漏了什么,有一种方法可以在使用 Qt 的 QScriptEngine::evaluate() 之前检查表达式的语法?

另一种方法是使用 Lepton 库(或类似库),但我不希望包含其他第 3 方组件。

最佳答案

不幸的是存在配置/Qt 问题。更新到最新的 Qt5.5 并重建项目解决了这个问题。谢谢@hyde。

关于c++ - QScriptEngine : bad expression considered valid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33039232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com