自我复制程序
我在质疑我对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 ++中是否可行?如果是这样,怎么样?
没有找到相关结果
已邀请:
5 个回复
犯痪桂涛杭
芳菱挨啡
在您的系统上查看它,看看它给出了什么。如果它没有显示完整路径,请不要担心所有文件打开操作都来自相同的起始相对目录,因此获取可执行文件的相对目录也会将相对目录提供给源(假设它们位于同一文件夹)。
席陋临拈
恋裂
厦惫
现在你有两个标识符
和
。循环遍历数组并通过您喜欢的界面打印数据。
演示:http://coliru.stacked-crooked.com/a/d283f6dd9118b164