Я пытаюсь написать небольшой класс, который будет загружать данные чанка из части файла мира 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.
Есть ли способ использовать filtering_streambuf без stringstream, чтобы разрешить нулевые данные, или есть ли способ остановить stringstream, чтобы не завершаться нанулевые данные?