有没有办法在C++中从字符串转换为纯代码?

11 text

我知道可以从.txt文件中读取然后将其中的各个部分转换为字符串,字符和整数值,但是是否可以将字符串作为程序中的实际代码使用?


码:

string codeblock1="cout<<This is a test;";
string codeblock2="int array[5]={0,6,6,3,5};}";
int i;
cin>>i;
if(i)
{
execute(codeblock1);
}
else
{
execute(codeblock2);
}
Run Code Online (Sandbox Code Playgroud)

execute从文本转换为实际代码的函数在哪里(我不知道是否存在一个名为execute的函数,我将其用于我的示例).

Eli*_*sky 8

在C++中,没有简单的方法可以做到这一点.此功能适用于更高级别的语言,如Python,Lisp,Ruby和Perl(通常具有某些eval功能的变体).但是,即使在这些语言中,这种做法也是不受欢迎的,因为它会导致代码非常难以理解.

重要的是你问自己(也许告诉我们)你为什么要这样做?

或者你只是想知道它是否可能?如果是这样的话,那就是毛茸茸的.你可以编写一个C++源文件(生成你想要的任何内容,只要它是有效的C++),然后编译它并链接到你的代码.当然,只要编译器在运行时可用(并且您只是执行它system),所有这一切都可以自动完成.我知道有人曾经做过一次重大优化.它不漂亮,但可以使用.


ojb*_*ass 3

您可以创建一个函数并解析您喜欢的任何字符串,并从中创建一个数据结构。这称为解析树。随后,您可以检查解析树并生成必要的动态结构来执行其中的逻辑。解析树随后被转换为要执行的运行时表示。

所有编译器都这样做。他们获取您的代码并基于此生成机器代码。在您的特定情况下,您希望一种语言为自己编写代码。通常,这是在代码生成器的上下文中完成的,并且它是更大的构建过程的一部分。如果您编写一个程序来解析您的语言(考虑使用 flex 和 bison 进行此操作)并生成代码,您就可以实现您想要的结果。