これが簡単な質問で、誰かが私に答えたり、例を挙げたりできることを願っています. 私は 4GB を超えるサイズのファイルを扱っており、入力ファイル全体を保存して編集してから出力したい場合、メモリの問題が予測されるため、ファイルの書き換えを検討する方が簡単だと思いました (行ごと、または一度に 25 行のセクション)。調べてみると、当初考えていたよりもずっと複雑に思えますが、どこでも (このサイトを含む)、データを保存するか、別の出力ファイルを開くことをお勧めします。読み込んだファイルを編集することはできますか? もしそうなら、そうするための最良の方法は何ですか?ファイルの npos を使用して、読み込んだものに戻る必要がありますか?
ファイル形式 (ヘッダーと余分な情報なし):
* voxel 0 0 0 1 1 1 3
Res 000000000000 000100000000 2.66668e+06
Cap 000000000000 000100000000 2.19141e-16
Res 000000010000 000100010000 2.66668e+06
Cap 000000010000 000100010000 2.19141e-16
Res 000000000001 000100000001 2.66668e+06
Cap 000000000001 000100000001 2.19141e- 16
Res 000000010001 000100010001 2.66668e+06
Cap 000000010001 000100010001 2.19141e-16
Res 000000000000 000000010000 2.66668e+06
Cap 000000000000 000000010000 2.19141e-16
Res 000100000000 000100010000 2.66668e+06
Cap 000100000000 000100010000 2.19141e-16
Res 000000000001 000000010001 2.66668e+06
キャップ 000000000001 000000010001 2.19141e-16
レス 000100000001 000100010001 2.66668e+06
Cap 000100000001 000100010001 2.19141e-16
Res 000000000000 000000000001 2.66668e+06
Cap 000000000000 000000000001 2.19141e-16
Res 000100000000 000100000001 2.66668e+06
Cap 000100000000 000100000001 2.19141e-16
Res 000000010000 000000010001 2.66668e+06
Cap 000000010000 000000010001 2.19141e-16
Res 000100010000 000100010001 2.66668e+06
キャップ 000100010000 000100010001 2.19141e-16
別のファイルからの情報と、ファイルの先頭にある場所 (0 0 0 1 1 1) に基づいて、どのように、どの値が変化するかを判断しますが、これらのデータ ブロックがそれ以上ではないにしても、数千について話すときは本当に心配です。新しいファイルを読み取ってから書き込むことができず、このファイルを効果的に読み書きする方法がわかりません。変更する必要があるのは、各行の末尾の値 (2.6668e+06 と 2.19141e-16) だけですが、それらは異なりますが、この場合は理解しやすいようにすべて同じです。私は現在ファイルを読み込んでおり(ifstreamのみ)、ファイルを書き直す必要があるところまで到達できますが、書き込んでいる場所の位置を簡単に変更する方法や、挿入する方法と挿入する方法がわかりません。既存のファイルへの書き込みの同様の問題。
どんなアドバイスでも大歓迎です。短い例は特にそうです!