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;
}
}
}
これは、ソリューションのソース テキストのみを出力します (この関数)。これは彼らが考えていた解決策ですか?
ソース ファイルの場所をハードコーディングする必要のない動的なソリューションが必要です。ただし、実行時にソース ファイルの場所を自動的に取得する方法を知りません。
それに関連するもう 1 つのポイントは、「インクルード」ファイルのインクルードと、(関数呼び出しに遭遇したときに) 関数が格納されているソース ファイルの場所を自動的に取得することです。 」プログラム。
これは C++ で可能ですか? もしそうなら、どのように?