2011-12-06 10 views
0

圧縮されたバイナリデータをgzip形式で保存する変数 "stringstream"があります。VisualC++ in memory Uncompression

このstringstream変数をメモリに展開します。

まず、gzip形式のバイナリデータをメモリ内で解凍するには、使用するサードパーティのライブラリを教えてください。

gzipおよびdeflate形式の圧縮/圧縮解除にzlibライブラリが注目されました。

しかし、提供zlip解凍を扱う二つの機能はまさに私のニーズを満たしていないように見えます:

int uncompress (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen); 

int gzread (gzFile file, voidp buf, unsigned len); 

最初の1(解凍)は、事前に解凍されたデータの長さを知るために私を必要とし、適切にストレージに十分なメモリを割り当てます。私の場合、それは不明です。

一方、2番目のファイル(gzread)はファイルを入力として受け取り、メモリバッファではありません。

zlipやその他のライブラリを使用した "効率的な"メモリ内解凍についてはどう思いますか?

ありがとうございました。 Boostライブラリでgzipのためのいくつかの解凍フィルタがあるように思わ

+0

バイナリ形式のデータをgzipで圧縮されていませんか?それで 'stringstream'はエンコードしない限りデータを格納するのに良い選択ではありませんので、非ゼロの' char'値として格納することができます。その理由は、 'stringstream'はそのデータが文字列であり、文字列が有効なバイナリデータであるゼロで終わることを期待しているからです。 –

答えて