【发布时间】:2015-11-21 07:38:08
【问题描述】:
我想要做的是创建一个函数,该函数将接受一个带有 1-3 个变量的输入字符串(并且至少需要一个),然后解析该输入以获得一个表达式。然后,此表达式将被视为合乎逻辑并返回 true 或 false。
例如,
"X == Y && 0.1 <= X < 1.0 && Z > 0.0"
然后首先迭代该字符串中的变量并用实际值替换。替换所有变量后,修改后的字符串将如下所示:
"1.0 == 1.0 && 0.1 <= 1.0 < 1.0 && 0.6 > 0.0"
然后该字符串将被逻辑测试。如果为真,则该函数将返回真,否则返回假。
我在想函数应该是这样的:
IsLogical(string, float X, float Y, float Z)
过去几个小时我一直在寻找实现此目的的方法,但我发现的只是算术数学方程解析器。到目前为止,我所做的只是将变量替换为三个输入值的部分。
如果有人愿意帮忙,你能告诉我怎么做吗?给我看例子肯定也很棒。
此函数不能使用任何外部资源,如 boost 或嵌入式 Lua。
编辑:这应该包括 C++ 中的所有基本比较运算符,例如小于、大于、小于或等于、大于或等于、等于、不等于、和、或、括号。它将全部采用 C++ 格式。如果输入的格式不正确,函数会自动返回 false。
【问题讨论】:
-
我只需要插入变量并进行评估。在这里嵌入 Lua 绝对不是一个选择。
-
@CoreyIles 你的问题是什么?您是要求有人为您编写代码,还是您的代码存在特定问题?
-
阻止我使用它的不是 Lua 的大小。你建议我如何让它不那么宽泛?
标签: c++ string parsing logical-operators