c++ - 是否可以将结构与条件语句完全一样的字符串转换为可以读取和操作的语句?
问题描述
我和其他一些人的任务是为我们的第一年项目创建一个真值表生成器。我们完成了绝大多数工作,除了一些事情,其中最重要的是实际将语句(例如: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++ 在运行时对编译时变量名称的访问为零,在某些编译器中的一些符号修饰之外。
甚至“constexpr 运行时”也无法访问它。
推荐阅读
- jpa - 如何参数化单个查询
- python - 如何在分组数据python中执行for循环
- python - 如何制作多种类型的模型并在 Django 中使用相同的名称引用它们?
- python-3.x - python3 - 将正则表达式映射应用于列
- javascript - 如何使用 useSpatialIndex = false 缩放到范围?
- wordpress - 如何在购物车中添加复选框,在编辑订单页面中保存和显示复选框值?
- android - 如何更改 Material Exposed 下拉菜单图标的位置和背景?
- apache-spark - Google data proc 记录有关资源不足但未失败的错误
- mysql - 代理 SQL 错误“在 SET NAMES 期间检测到断开的连接”
- reactjs - 将文件夹中的特定文件添加到 .gitignore