2012-04-20 6 views
2

私はループ内でios::appモードのファイルに何らかのテキストを出力するためにofstreamを使用しています。しかし、いくつかのステップの後で、私はファイルの内容をクリアする必要があります。ファイルを削除して再度開くか、ios::truncで再度開くことができますが、閉じずにもう一度ファイルを開くことができる場所はありますか?C++でテキストファイルの内容を動的に消去する方法はありますか?

+2

2つの単純なコード行を避ける方法を求めていますか? – ildjarn

+1

何かをファイルに書きたいのですが、ループ内のすべてを再度削除するだけですか? – garbagecollector

+0

ファイルは、デバッグに使用されたプログラム出力の一時的なステータスを格納するために使用されました。しかし、出力情報は一度に300Mほどではありません。 10ループごとにステータスを保存します。この情報はデバッグにのみ使用されます(メッセージが表示されるまで)。プログラムのループが何百万回も繰り返されているので、毎回ファイルを開いてもう一度閉じると、遅くなります。 – user1285419

答えて

2

ios::appモードで開いた場合は、コンテンツをもう一度開くことなく消去する方法はありません。 ofstreamは、テキストをファイルに入れることしかできず、テキストファイルはシーケンシャルなので、データを直接消去することはできません。

+0

よろしくお願い申し上げます。 – user1285419

0

ioストリームで可能な場合は必ず、現在の位置を0に設定して開いているファイルを切り捨て、ファイルにEOFマーカーを設定してください。例えば、Win32 APIでは、SetFilePointer()SetEndOfFile()でそれを行うことができます。

関連する問題