Я читаю сжатый файл, используя подталкивания iostreams: Следующие работает отлично:Может увеличить iostreams читать и сжимать gzipped файлы на лету?
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);
Однако, я не хочу, чтобы принять удар памяти читать весь файл сжатого в память. Я хочу, чтобы читать файл постепенно.
Например, если у меня есть структуры данных X, который инициализирует себя от IStream,
X x;
x.read(in);
терпит неудачу. Предположительно, это связано с тем, что нам придется возвращать символы в поток , если мы делаем частичные потоки. Любые идеи о том, поддерживает ли iostreams, поддерживает ли это?
Would делать такую операцию, как вызов 'GetLine()' 'то сжимающую()' это через работу петли для вас? – user99545
@ user99545: Нет: поскольку X создает себя из двоичных данных. – ATemp
Я не понимаю, почему нет. Я использовал boost iostreams для чтения и записи потоков, сжатых zlib таким образом. – Ferruccio