boost массив байтов распаковки gzip

Я реализовал распаковку файлов с помощью gzip / zlib, как показано в их примерах на сайте boost.

void CompressionUtils::Inflate(std::ifstream& inputFile,
                               std::ofstream& outputFile)
{
   boost::iostreams::filtering_streambuf<boost::iostreams::input> in;
   in.push(boost::iostreams::gzip_decompressor());
   in.push(inputFile);
   boost::iostreams::copy(in, outputFile);
}

это отлично работает. Я тоже чтение данных из сокета, которые я получаю из службы JSON на базе отдыха, которая также сжимается. Я решил, что напишу реализацию на основе памяти, насколько это сложно. Ну, я понял, что не понимаю потоки и поток буферы, как я должен. Я виню последние несколько лет в Java;) .. Итак, я пошел по этому пути.

void CompressionUtils::Inflate(char* compressed, 
                               int size,
                               char* decompressed)
{

   boost::iostreams::stream<boost::iostreams::array_source> source(compressed,size);
   //std::stringstream str;

   boost::iostreams::filtering_streambuf<boost::iostreams::input> in;
   in.push(boost::iostreams::gzip_decompressor());
   in.push(source);
   //boost::iostreams::copy(in, str);   
}

Но я не понимаю, какой поток я могу использовать для получения распакованного char * представления распакованного потока. Это должно быть легко, и, вероятно, так оно и есть, но последние пару часов я тратил зря на безуспешные попытки.

10
задан Lightness Races with Monica 5 March 2012 в 00:35
поделиться