2011-11-21 22 views
15

ハイスコアを実装するゲームを.txtファイルにしようとしています。私が持っている問題はこれです:私のような文を作るとき:ファイルに書き込むときに上書きされる既存のファイルの内容を避ける

ofstream fout("filename.txt"); 

これはその名前のファイルを作成するか、単にその名前のファイルを探していますか?

事は、私が新たにプログラムを起動し、次の文を作る時はいつでもということです:

fout << score << endl << player; 

それは私の以前のスコアを上書きします!

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

答えて

32

std::ofstreamデフォルトでは、新しいファイルが作成されます。 append parameterでファイルを作成する必要があります。

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

完全性のために、それは 'std :: ios :: app'です。'ios'は' std'名前空間内の名前空間であるため –

13

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

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

あなただけではなく、追加モードで最後にそれらを仮止めのデータとテキストの特定の行を上書きしたい場合、あなたはおそらく、ファイルを読み取り、データを解析する方がいいでしょう、そして、それを固定(どのようなものを削除したり、何かを削除したり、何でも編集したりすることができます。

+0

、ファイルを読み込み解析し、バック、すべてを書くには、あなたのファイルが非常に大きい場合、それはあなたのファイルは、言う100ギガバイトであれば、明らかに、コンピューティングパワーをたくさん取るRAMとディスクを言及しないように良いアイデアではありません読み取り/書き込み速度。 –

関連する問題