4

fstream を使用して、既存のファイルを部分的に切り捨て (または短縮) しようとしています。私は EOF 文字を書いてみましたが、これは何もしないようです。

どんな助けでも大歓迎です...

4

4 に答える 4

3

私はあなたができるとは思わない。HANDLE<->int<->FILE *少なくともWindowsでは、のラッパー階層を「上下に」移動するための多くの関数がありますがFILE *、iostreamsオブジェクトからを抽出するための「適切な」機能はありません(実際に実装されている場合でも)。

この質問が参考になるかもしれません。

個人的には、iostreamを避けて操作することを強くお勧めします。これらは、設計が不十分で、C ++が多く、見るのが面倒です。Boostのiostreamを確認するか、クラスを使用する必要がある場合はstdio.hをラップします。

stdioに関連する関数はftruncate()です。

于 2010-02-14T16:14:26.970 に答える
1

Boost.Interprocessライブラリは、移植可能な関数を定義しますtruncate何らかの理由で文書化されていませんが、このヘッダー ファイルで見つけることができます。

于 2010-02-14T16:54:15.970 に答える
0

最後に弾丸を噛み、配列に保持するファイルの部分を読み取って、それを書き直しました。これは最善の解決策ではありませんが、ファイルは常に小さいため、この方法を受け入れることにしました。

于 2010-02-14T22:08:14.683 に答える
0

OS次第でしょう。ほとんどの OS はこれをサポートしていますが、方法が異なります。Windows では、SetEndOfFile(). Unix および同様のシステムではlseek、ファイルを終了させたい場所に移動し、そこでlwrite0 バイトを実行します。他の OS は間違いなく他の方法を使用します。

于 2010-02-14T16:11:08.740 に答える