Lot*_*zki 5 c++ compression zlib
有人可以告诉我我需要使用哪个函数来解压缩已经用vb.net的gzipstream压缩的字节数组.我想使用zlib.
我已经包含了zlib.h但是我无法弄清楚我应该使用哪些函数.
你可以看看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)