使用boost :: iostreams :: filtering_streambuf解压缩zlib数据

时间:2012-03-19 20:42:37

标签: c++ boost zlib stringstream

我正在尝试编写一个小类,它将从一个Minecraft世界文件的一部分加载块数据。我已经将一些数据存储在一个char数组中,这个数组是用zlib压缩的,需要解压缩。

我正在尝试使用提升filtering_streambuf来执行此操作。

char * rawChunk = new char[length - 1];

// Load chunk data


stringstream ssRawChunk(rawChunk);

boost::iostreams::filtering_istream in;

in.push(boost::iostreams::zlib_decompressor());
in.push(ssRawChunk);

stringstream ssOut;

boost::iostreams::copy(in, ssOut);

我的问题是rawChunk包含null数据,因此在处理从(char*) rawChunk(stringstream) ssRawChunk的数据时,它会终止于~257而不是预期的长度2154. / p>

有没有办法在没有stringstream的情况下使用filtering_streambuf来允许空数据,或者有没有办法阻止stringstream不终止于空数据?

1 个答案:

答案 0 :(得分:0)

您应该将rawChunk存储到允许空字符的std::string中。