Boost iostream占用子流

时间:2018-11-02 15:10:16

标签: c++ boost-iostreams

我正在按照this示例解压缩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 个答案:

没有答案