ユーザーからのテキストを受け取り、ファイルハンドルを使用してテキストファイルに保存するC++で記述されたプログラムがあります。プログラムのスニペットは次のとおりです。
プログラムは正常に動作します。唯一の問題は、テキストファイルにテキストが追加されないことです。むしろ、既存のテキストをすべて「削除」し、新しいテキストのみを保存します。
つまり、プログラムの前のセッションで保存されたテキストは破棄され、代わりに新しいテキストが保存されます。どうすればこの問題を解決できますか?
O_APPEND
ファイルを開くときにフラグを含めます。のリファレンス ページを参照してください_open()
。
これは C++ であるため、ofstream
代わりに an を使用することを検討してください。これらはタイプ セーフであり、ファイルに書き込まれる引数の長さを指定する必要がなくなります。
std::ofstream out(full_path, std::ios_base::app);
if (out.is_open())
{
out << "----Session----\n\n"
<< "Date/Time: " << datetime << "\n\n"
<< "Text: " << text << "\n\n\n\n";
}