我正在尝试编写一个小类,它将从一个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不终止于空数据?
答案 0 :(得分:0)
您应该将rawChunk
存储到允许空字符的std::string
中。