gpt4 book ai didi

c++ - 解压缩 bzip2 字节数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:21:53 25 4
gpt4 key购买 nike

如何使用 boost 解压缩 bzip2 压缩的字节数组?我找到了一个例子 here ,但输入是一个文件,因此使用了 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 压缩器称为 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);

关于c++ - 解压缩 bzip2 字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7099232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com