在运行时c ++将字符串转换为代码

时间:2013-09-12 13:45:18

标签: c++ string runtime

我正在生成以下格式的Ifse表达式

If(X > 10) Then Fly = True Else Fly = False
If(X > 9) Then Fly = True Else Fly = False
If(X > 8) Then Fly = True Else Fly = False
If(X > 7) Then Fly = True Else Fly = False
If(X > 6) Then Fly = True Else Fly = False

我想知道我可以在运行时执行此表达式吗?我不知道我的问题是否清楚。

我将添加一个示例

String = "";
for(int i = 0; i < n; i++)
{
     string ="if(x > 10){Fly = true;} else {Fly = False;}";
     Execute (Expression HERE)! 

}

甚至可以这样做吗?大声笑 谢谢。 哈尼。

5 个答案:

答案 0 :(得分:4)

可以使用TCC(http://bellard.org/tcc/)。它允许在运行时本地编译和运行代码。另一种方法是使用解释器,那里有很多(LUA,Python等,见列表wiki)。

答案 1 :(得分:4)

一个人不仅仅是解释C / C ++代码... AFAIK你不能 (除非你编译另一个二进制文件并从cmd行运行它,否则......)

注意:您可以写

fly = (x > 10);

而不是

if(x > 10){
    fly = true;
}else{
    fly = false;
}

答案 2 :(得分:3)

没有。 C ++是一种编译语言,没有eval函数或类似函数。您可能希望在程序中包含脚本引擎,例如Lua

答案 3 :(得分:3)

除非您申请Greenspun's 10th rule

答案 4 :(得分:0)

这是可能的,就像c ++编写的js一样。应创建变量池(字符串到variabe的链接),与函数池(字符串到函数的链接)相同。 regex也用于链接。