boost :: filtering_streambuf с помощью gzip_decompressor (), как получить доступ построчно из файла

Я написал приложение Logparser и теперь хочу реализовать распаковку файлов .gz . Я пробовал использовать boost :: iostreams и zlib, которые, кажется, работают, но я не знаю, как обрабатывать ввод, который я получаю из сжатых файлов.

Вот что я делаю:

input.open(p.source_at(i).c_str(), ios_base::in | ios_base::binary);
boost::iostreams::filtering_streambuf<boost::iostreams::input> in;
in.push(boost::iostreams::gzip_decompressor());
in.push(input);
boost::iostreams::copy(in, cout);

Этот код запускается, если мой исходный файл имеет окончание .gz. Последняя строка правильно выводит распакованный файловый поток в cout.

Но как я могу получить построчно из распакованного файла? Моя программа использует getline (ввод, передача) для чтения строк из входного потока, если он не сжат.

Теперь я хочу таким же образом читать из распакованного файла, но как мне получить новую строку из in?

Декументация ускорения мне в этом не сильно помогла.

Заранее спасибо!

9
задан Daniel Stefanovski 28 March 2011 в 16:19
поделиться