如何用zlib解压缩gzipstream

Lot*_*zki 5 c++ compression zlib

有人可以告诉我我需要使用哪个函数来解压缩已经用vb.net的gzipstream压缩的字节数组.我想使用zlib.

我已经包含了zlib.h但是我无法弄清楚我应该使用哪些函数.

Max*_*kin 8

你可以看看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);
Run Code Online (Sandbox Code Playgroud)

然后逐行解压缩:

for(std::string line; getline(decompressor, line);) {
    // decompressed a line
}
Run Code Online (Sandbox Code Playgroud)

或者将整个文件放入数组中:

std::vector<char> data(
      std::istreambuf_iterator<char>(decompressor)
    , std::istreambuf_iterator<char>()
    );
Run Code Online (Sandbox Code Playgroud)