を閉じるまで、出力をファイルにしません(私はofstreamのを閉じると同様に機能することを前提と)私はアプリを閉じるまで、残念ながらC++ - ofstreamのは、私は次のコード持っている私はプログラム
ofstream mOutFile.open(logPath, ios_base::app);
string lBuilder;
lBuilder.append("========================================================\n");
lBuilder.append("Date: ");
lBuilder.append(asctime(timeinfo));
lBuilder.append("\n");
lBuilder.append("Log Message:\n");
lBuilder.append(toLog);
lBuilder.append("\n");
lBuilder.append("========================================================\n\n");
int lSize = lBuilder.size();
char* lBuffer = new char[lSize];
int index = 0;
for each (char c in lBuilder)
lBuffer[index++] = c;
mOutFile.write(lBuffer, lSize);
mOutFile.flush();
を出力はテキストファイルに書き込まれません。私はおそらくストリームを閉じて再オープンすることができ、すべてが「うまくいく」ことを知っていますが、それは愚かで間違った解決策のようです。私はここで間違って何をしていますか?
また、私はここに発見した他の質問に基づいて、以下のバリエーションを試してみましたが、これらのソリューションは、動作しませんでした。この上の任意の助けを事前に
mOutputFile << flush;
mOutputFile << endl;
感謝を。
編集このコードのすべては、Visual C++で動作していますが、フラッシュを強制しても、ストリームが閉じられるまでファイルが書き込まれない点を除いて、うまく動作します。また、私は< <演算子をchar *と.write()に変更して、動作が異なるかどうかを調べました。
なぜ構文の種類が「それぞれ(charC in lBuilder)」です。それは有効なC++ではありません。 –
<<を使用して文字列をファイルに書き込んでいない理由はありますか? – ebutusov
'for each'はC#ismのようです。 また、ファイルハンドルをフラッシュした後にファイルハンドルを閉じて、それが役立つかどうか確認してください。 –