1

既存のファイルの末尾を超えてシークするにはどうすればよいですか?

test.bin私が1000バイトだと考えてください。

次に、次のように実行します

std::filebuf fbuf;
fbuf.open("c:\\test.bin", std::ios_base::in | std::ios_base::out | std::ios_base::app | std::ios_base::binary);
fbuf.pubseekoff(10, std::ios_base::end);
fbuf.sputc(1);
fbuf.close();

この例を実行すると、新しいファイルサイズは 1011 バイトになると予想されます。ただし、代わりに、既存のファイルの末尾に 0x01 を追加して 1001 バイトにします。

興味深いことに、それが新しいファイルのときは、私が望むように動作します。

これを Windows 7 x64 で実行していますが、ターゲット プラットフォームは Ubuntu になります。

4

1 に答える 1

3

あなたはstd::ios_base::appフラグを設定します。これにより、すべての書き込みがファイルの最後で発生します。現在の位置で書き込みを実行する場合、ファイルを開くときにこのフラグを指定することはできません。

ios_base::appファイルを追加します。つまり、常にファイルの最後に書き込みます

于 2012-10-12T04:00:23.387 に答える