私がする時
fstream someFile("something.dat", ios::binary|ios::out);
someFile.seekp(someLocation, ios::beg);
someFile.write(someData, 100);
あたかも ios::trunc を指定したかのように、適切な 100 バイトだけを置き換えるのではなく、ファイル全体をそれらの 100 バイトで置き換えるようです。ファイルを切り捨てないようにする移植可能な方法はありますか?
編集: ios::in を追加するとうまくいくようですが、なぜこれが必要なのですか?それは標準的な動作ですか?
編集 #2:既存のファイルに追加しようとしていません。100 バイトを置き換える必要がありますが、残りは影響を受けません。