任何程序都可以将文本文件读入c ++代码吗?

时间:2014-03-11 06:22:17

标签: file text interface runtime append

程序是否可以打开文本文件并将其用作c ++代码?如果是这样,怎么样?如果程序想要将文本文件中的代码附加到自身怎么办?这会发生吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

取决于“文本文件”的含义和“将其用作c ++代码”。如果通过“文本文件”表示包含未编译的C ++代码的文件,并且“将其用作C ++代码”意味着执行它,答案是否定的,您需要在任何实际使用之前先编译它(除非你想写一些解释器或编译器。)

关于你的第二个问题,我认为这是可能的,但它真的很难,因为你需要将该文本文件中的C ++代码编译成二进制文件,然后以有意义的方式将其插入到程序中。 / p>

如果您只是为了好奇而这样做,那么您可能会更好地使用解释性语言(例如Perl或Ruby)。我自己有点好奇,所以我用下面的ruby脚本(保存在alpha.rb中)来解决这个问题:

File.open('alpha.rb', 'a') do |file1|
    file1.puts "\nprint 'Sneaky Addition!'";
end

运行之后,您将看到添加了一行新代码。如果你第二次运行它,它将运行代码。我相信它不是第一次运行的原因是文件在运行时已经加载到Ruby中,因此在重新加载文件之前它不会看到对文件的更改。

当然,我们可以通过使用第二个文件(as explained here)...

来解决这个问题

<强> Alpha.rb

print "Alpha running...\n"
File.open('beta.rb', 'a') do |beta|
    beta.puts("\nprint \"But alpha got the last word.\\n\"")
end
load 'beta.rb';

<强> Beta.rb

print "Beta running...\n"
File.open('alpha.rb', 'w') do |alpha|
    alpha.puts("print \"Sneaky Beta addition.\\n\"")
    alpha.puts("\nprint \"Beta overwrote alpha!\\n\"")
    alpha.puts("\nprint \"This code only works once =) \\n\"")
end

load 'alpha.rb'

我想你可能在C ++中可以做类似的事情,但是因为你将代码编译成二进制文件会更加复杂,即使这样你也可能不能只追加它。