4

書きたいテキストファイルがあります。ファイルの内容を常に保持したい。「FIFO」の後に書き込みたい(最後の書き込みは常にファイルの一番上の行に)。

fout.open("filename");ateモードでファイルの内容を保持しようとしました。その後、書き込みseekg(0)カーソルをファイルの先頭に戻そうとしました。動作しませんでした。

私が見つけたユニークな方法は、非常に時間がかかると思います。すべてのファイルの内容を一時ファイルにコピーします。書き込みたい書き込みたい後、ターゲットファイルの最後に一時ファイルの内容を書き込みます。

この操作を行う簡単な方法が必要ですか?

4

5 に答える 5

5

ホルヘ、あなたがメモリ内のファイル全体を書き直さなければならないことに関係なく。特にファイルが単純なテキストファイルであるため、ファイルをそのままにしてメモリを追加することはできません(メタデータの形式があれば...)

とにかく、あなたの最善のチャンスは、古いコンテンツを一時的な場所にフラッシュし、必要なものを書き込んで、古いコンテンツを追加することです。

于 2012-11-26T21:02:01.167 に答える
1

何を求めているのかわかりません。ファイルの先頭に行を追加する場合、唯一の方法は、新しい一時ファイルを開き、その行を書き込み、新しい行の後に古いファイルをコピーしてから、古いファイルを削除して一時ファイルの名前を変更することです。

元の行の長さが固定されていて、それを置き換えたい場合は、ファイルを と の両方で開くだけ ios_base::inですios_base::out

于 2012-11-26T21:38:22.380 に答える
0

まず、ファイルは歴史的にストリームであることに注意してください。つまり、ファイルは一方向にしか読み書きできません。これは、ファイルが一方向に移動できるテープに保存されていた時代に由来します (当時)。

ただし、先頭にのみ追加したい場合は、ファイルを後方に保存するだけです。ばかげているように聞こえますか?多分、しかしこれはほんの少しのオーバーヘッドでうまくいくでしょう。

それとは別に、現在の OS では、先頭に追加するためにコピーを作成する必要があります。ファイルはもはやストリームではなく、ハードディスク上でランダムにアクセスできますが、依然として一方向に拡大するように作られています。もちろん、ファイルが双方向に大きくなるファイルシステムを作成することもできますが、私は聞いたことがありません。

于 2012-11-26T21:54:52.720 に答える
-4

必要な順序で文字列に書き込んでから、ファイルにフラッシュします

于 2012-11-26T20:58:04.310 に答える