我质疑我对 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;
}
}
}
这仅打印出解决方案的源文本(此功能)。这是他们想到的解决方案吗?
我想要一个不需要硬编码源文件位置的动态解决方案。但是,我不知道在运行时自动获取源文件位置的方法。
与此相关的另一点是包含“包含”文件,并且(在遇到函数调用时)自动获取存储该函数的源文件的位置。对我来说,这将是一个真正的“自我复制” “ 程序。
这在 C++ 中可能吗?如果是这样,怎么做?