web-dev-qa-db-ja.com

ファイルへの書き込み時に既存のファイルの内容が上書きされないようにする

ハイスコ​​アを.txtファイルに実装するゲームを作ろうとしています。私が持っている質問はこれです:私が次のような声明を出すとき:

ofstream fout("filename.txt");

これはその名前のファイルを作成しますか、それともその名前のファイルを探しますか?

問題は、私がプログラムを新たに開始し、次のステートメントを作成するたびです。

fout << score << endl << player; 

以前のスコアを上書きします!

ファイルに書き込むときに新しいスコアが古いスコアを上書きしないようにする方法はありますか?

16
Monkeyanator

std::ofstreamはデフォルトで新しいファイルを作成します。 appendパラメータ でファイルを作成する必要があります。

ofstream fout("filename.txt", ios::app); 
34
J. Calleja

単にファイルの最後に追加したい場合は、追加モードでファイルを開くことができるため、書き込みはファイルの最後で行われ、以前に存在していたファイルの内容は上書きされません。

ofstream fout("filename.txt", ios::app);

追加モードで最後に追加するのではなく、特定のテキスト行をデータで上書きしたい場合は、ファイルを読み取ってデータを解析し、修正することをお勧めします(追加、削除、編集)。何でも)そしてそれをすべてファイルに書き戻す。

13
Seth Carnegie