首页 > 解决方案 > 是否可以将结构与条件语句完全一样的字符串转换为可以读取和操作的语句?

问题描述

我和其他一些人的任务是为我们的第一年项目创建一个真值表生成器。我们完成了绝大多数工作,除了一些事情,其中​​最重要的是实际将语句(例如:p V q)转换为布尔真值的函数。

是否可以将具有正确 c++ 参数语法的字符串语句直接转换为条件,例如“(p || !q)”(p 和 q 是具有各自值的预定义变量)?

我们已经考虑了许多条件语句的路径,基于我们可以通过字符串分析找到的内容,并根据发现对变量进行操作,但我想知道是否有更有效的方法来实际编码。该代码旨在为真值表语句获取几乎任何输入,将其转换为正确的 c++ 语法,并将语句分离为组件。话虽如此,如果我们要通过查找某些元素并使用 if-then 或 switch 语句对它们进行操作来做到这一点,有很多选项可以解释。如果有更有效的路线,我愿意接受建议,并欢迎对我们的流程提出任何批评。

作为一个视觉演示,这就是我们的想法:

bool p=1, q=0;
string test= "(!p || q)"; // would supposedly return 0 if analyzed as a conditional statement

cout << endl << "Truth Table Generator Test" << endl;
cout << "p = " << p << endl << "q = " << q << endl;
cout << test << " = " << truthVal(test) // Used to signify the conversion from string to condition

假设输出:


Truth Table Generator Test
p = 1
q = 0
(!p || q) = 0

标签: c++generatordiscrete-mathematics

解决方案


不,C++ 在运行时对编译时变量名称的访问为零,在某些编译器中的一些符号修饰之外。

甚至“constexpr 运行时”也无法访问它。


推荐阅读