Повысить iostreams принять подпоток

Я следовал этому примеру о том, как распаковать файл bzip2:

#include <fstream>
#include <iostream>
#include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/bzip2.hpp>

int main()
{
    using namespace std;
    using namespace boost::iostreams;

    ifstream file("hello.bz2", ios_base::in | ios_base::binary);
    filtering_streambuf<input> in;
    in.push(bzip2_decompressor());
    in.push(file);
    boost::iostreams::copy(in, cout);
}

Предположим, у меня есть большой текстовый файл в формате bz2. Можно ли создать подпоток из in который начинается со второй строки и заканчивается перед последней строкой? Или просто копирует данный размер в cout? Рассмотрим пример файла, созданного

echo -e "First\nSecond\nThird\nForth" | bzip2 > hello.bz2

можно ли скопировать только второй и третий ряд в cout без чтения всего несжатого файла в буфер? Я старался boost::iostreams::restrict но потом я получил no random access: iostream error,

0 ответов

Другие вопросы по тегам