Распаковка данных zlib с помощью проблемы boost :: iostreams :: filtering_streambuf - PullRequest
2 голосов
/ 20 марта 2012

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

1 Ответ

0 голосов
/ 20 марта 2012

Вы должны сохранить rawChunk в std::string, что допускает нулевые символы.

...