5

vb.netのgzipstreamで圧縮されたバイト配列を解凍するために使用する必要がある関数を誰かに教えてもらえますか?zlibを使いたいのですが。

zlib.hを含めましたが、使用する関数がわかりません。

4

4 に答える 4

9

The Boost Iostreams Libraryを見ることができます:

#include <fstream>
#include <boost/iostreams/filtering_stream.hpp>
#include <boost/iostreams/filter/gzip.hpp>

std::ifstream file;
file.exceptions(std::ios::failbit | std::ios::badbit);
file.open(filename, std::ios_base::in | std::ios_base::binary);

boost::iostreams::filtering_stream<boost::iostreams::input> decompressor;
decompressor.push(boost::iostreams::gzip_decompressor());
decompressor.push(file);

次に、1 行ずつ解凍します。

for(std::string line; getline(decompressor, line);) {
    // decompressed a line
}

またはファイル全体を配列に:

std::vector<char> data(
      std::istreambuf_iterator<char>(decompressor)
    , std::istreambuf_iterator<char>()
    );
于 2013-02-04T14:01:51.667 に答える
1

inflateInit2()gzip デコードをリクエストするには、 を使用する必要があります。zlib.hのドキュメントを読んでください。

zlib ディストリビューションには多くのサンプル コードがあります。また、zlib の使用法について詳しく説明されているこの例も参照してください。inflateInit2()の代わりに使用するように変更できますinflateInit()

于 2013-02-04T17:32:24.240 に答える
-1

zlib の使用例をご覧ください。http://www.zlib.net/zpipe.c

実際の作業を行う関数は inflate() ですが、inflateInit() などが必要です。

于 2013-02-04T14:01:54.290 に答える