自我复制程序

Kev*_*vin 0 c++ runtime dynamic quine

我在质疑我对Accelerated C++的最后一个练习的解决方案:

写一个自我复制的程序.这样的程序是没有输入的程序,并且在运行时,在标准输出流上写入其自己的源文本的副本.

我的解决方案

using std::string;
using std::cout;
using std::endl;
using std::ifstream;
using std::getline;

void selfReproduce16_1()
{
    ifstream thisFile("C:\\Users\\Kevin\\Documents\\NetBeansProjects\\Accelerated_C++_Exercises\\Chapter_16.cpp", ifstream::in);

    string curLine;

    bool foundHeader = false;

    while(getline(thisFile, curLine))
    {
        if(!curLine.compare("void selfReproduce16_1()") || foundHeader)
        {
            foundHeader = true;
            cout << curLine << endl;
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

这仅打印出解决方案的源文本(此功能).这是他们想到的解决方案吗?

我想要一个动态解决方案,不需要硬编码源文件的位置.但是,我不知道在运行时自动获取源文件位置的方法.

与此相关的另一点是包含"包含"文件,并且(当遇到函数调用时),自动获取存储函数的源文件的位置.对我来说,这将是一个真正的"自我复制" "节目.

这在C++中是否可行?如果是这样,怎么样?

peo*_*oro 8

打印自己的程序称为Quine.

我认为你的解决方案不会被认为是有效的:quines通常不允许读取文件(也不能获得任何其他类型的输入).编写Quine C++程序是可能的,在这里您可以找到许多语言的许多quine实现.