要解压缩数据块,我正在使用boost iostreams :: zlib_decompressor。第一个ID就像用boost来显示我的减压代码
boost::iostreams::filtering_istreambuf in;
in.push(boost::iostreams::zlib_decompressor());
in.push(boost::interprocess::basic_vectorstream<std::vector<char>>(chunkData));
std::vector<char> decomp;
boost::iostreams::copy(in, boost::interprocess::basic_vectorstream < std::vector < char >> (decomp));
在副本中,我得到一个例外,即zlib报告了Z_DATA_ERROR。
要测试我的数据是否有问题,我将其写入文件,然后使用我自己的inflate程序(它只使用zlibs页面中关于inflate,默认设置的示例)来膨胀该文件。我不仅没有得到任何错误,而且我的程序返回了正确的数据。
boost是否会使用一些奇特的设置进行解压缩,或者我使用filtering_istreambuf错误了吗?