Я подвергаю сомнению свое решение последнего упражнения в 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 ++?Если да, то как?