Как мне распаковать вектор дефлированных данных с помощью Boost? - PullRequest
2 голосов
/ 04 марта 2012

У меня есть вектор, который содержит сжатые zlib (дефлированные) данные.Я хотел бы распаковать его с помощью Boost's filtering_istream.На их сайте есть только один пример, который работает с потоком данных (в отличие от вектора, который у меня есть).

vector<char> compressed_buffer;
compressed_buffer.resize(cdh.length);
file.read(&compressed_buffer[0], cdh.length);

filtering_istream in;
in.push(zlib_decompressor());
in.push(something(compressed_data)); // what should "something" be?

Я хотел бы также получить несжатые данные в виде вектора.Как я могу это сделать?

1 Ответ

3 голосов
/ 04 марта 2012

Как насчет array_source?

in.push(array_source(&*compressed_data.begin(), &*compressed_data.end()));

Затем используйте boost::iostreams::copy с std::insert_iterator, чтобы вставить символы результата в новый вектор.

...