私は加速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++で可能ですか?もしそうなら、どうですか?
'ifstream'を使用するには、ルール「このようなプログラムは何も入力しませんものです」に違反します。 –
非常にスマートなソリューションです。ソースファイルを読み込んで出力します。そしてそれは "Accelerated C++"を読んだ後に行われます。私はそれもあまりにも*加速されていると言わなければならない*解決策:D – Nawaz
私はこの "近代的な"コンピュータープログラミングには本当に不公平なものがあると思う。私は20年間プログラマをしてきましたが、私はQuineを書く方法を知らず...これらの初心者は、350ページのAcceleratedマニュアル(Amazonでチェック)を読んでQuinesを書くことができます...私は悲しいです、とても悲しい。悲しいことに、私は料理人になるか、似たようなことをして、他の人に仕事を盗みます! :-) – xanatos