我该如何使用boost解压缩bzip2压缩的字节数组?我在这里找到了一个示例(链接),但输入是一个文件,因此使用了
编辑:我会接受boost的替代方案。
ifstream
。对我来说,文档不是很清楚 :(。编辑:我会接受boost的替代方案。
这里是我的代码,使用了boost.iostreams库中的DEFLATE压缩技术;你也可以将对应的BZip2压缩技术整合到其中:
#include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/filter/zlib.hpp>
#include <boost/iostreams/filter/bzip2.hpp> // <--- this one for you
#include <boost/iostreams/write.hpp>
// Output
std::ofstream datfile(filename, std::ios::binary);
boost::iostreams::filtering_ostreambuf zdat;
zdat.push(boost::iostreams::zlib_compressor()); // your compressor here
zdat.push(datfile);
boost::iostreams::write(zdat, BUFFER, BUFFER_SIZE);
// Input
std::ifstream datfile(filename, std::ios::binary);
boost::iostreams::filtering_istreambuf zdat;
zdat.push(boost::iostreams::zlib_decompressor());
zdat.push(datfile);
boost::iostreams::read(zdat, BUFFER, BUFFER_SIZE);
bzip2_(de)compressor()。
如果你想使用字节缓冲区而不是文件,请使用字符串流:char mydata[N];
std::string mydatastr(mydata, N);
std::istringstream iss(mydatastr, std::ios::binary);
std::ostringstream oss(mydatastr, std::ios::binary);