ATe*_*emp 6 c++ gzip boost-iostreams
我正在使用boost iostreams读取一个gzip压缩文件:以下工作正常:
namespace io = boost::iostreams;
io::filtering_istream in;
in.push(boost::iostreams::basic_gzip_decompressor<>());
in.push(io::file_source("test.gz"));
stringstream ss;
copy(in, ss);
Run Code Online (Sandbox Code Playgroud)
但是,我不想把整个gzip压缩文件读入内存.我希望能够逐步读取文件.
例如,如果我有一个从istream初始化自己的数据结构X,
X x;
x.read(in);
Run Code Online (Sandbox Code Playgroud)
失败.据推测,这是因为如果我们正在进行部分流,我们可能不得不将字符放回到流中.任何想法是否提升iostreams支持这个?
根据iostream 文档,该类型boost::io::filtering_istream源自std::istream. 也就是说,应该可以将其传递到任何std::istream&需要的地方。如果您在运行时出现错误,因为您需要unget()或putback()字符,您应该查看pback_size指定最多返回多少个字符的参数。我没有在文档中看到这个参数的默认值是什么。
如果这不能解决您的问题,您能否准确描述您的问题是什么?从表面上看应该可行。
| 归档时间: |
|
| 查看次数: |
2785 次 |
| 最近记录: |