2

既存のストリームの末尾にデータを追加できる zlib の iostream ラッパーが必要です。

追加モードの gzopen() 関数は、次の規則に従います。「追加するとき、gzopen は、ファイルが gzip ストリームで始まるかどうかをテストせず、追加を開始するために gzip ストリームの終わりを探しません。gzopen は単に gzip ストリームを既存のファイルに追加します。」たとえば、「a」オプションでファイルを開くと、複数の圧縮ストリームを持つファイルが作成されます。

zlib の gzofstream ラッパーは、パラメーター リストの std::ios_base::app を gzopen() 関数の "ab" モードとして変換します。その結果、gzofstream は複数のストリームを持つファイルも作成します。

ただし、私のアプリケーションでは、別の動作が必要です。メイン モジュールはファイルを追加モード (std::ios_base::app オプションを使用) で開き、既存のストリームの最後に小さなデータ部分を書き込み、ファイルを閉じる必要があります。たとえば、ファイルには、複数回のオープン/クローズ操作の後、常に単一の圧縮ストリームが含まれている必要があります。

zlib の gzlog の例には、必須に近い機能があります。ただし、純粋な C です。

私の仕事に適した解決策をいくつか提案してもらえますか?

4

1 に答える 1

1

この場合、すぐに解決できる解決策はないようです: iostream ラッパーは追加操作をサポートしていません。

gzlog と純粋な C (C++ ではない) に基づく独自のコードを実装しました。

于 2012-12-22T12:51:13.803 に答える