У меня проблемы с получением фильтра zlib boost :: iostreams для игнорирования заголовков gzip ... Похоже, что установка default_noheader для zlib_param в значение true и последующий вызов zlib_decompressor () приводит к ошибке data_error (некорректная проверка заголовка).Это говорит мне, что zlib все еще ожидает найти заголовки.Кто-нибудь получил boost :: iostreams :: zlib для распаковки данных без заголовков?Мне нужно иметь возможность читать и распаковывать файлы / потоки, которые не имеют двухбайтового заголовка.Любая помощь будет принята с благодарностью.
Вот модифицированная версия примера программы, предоставленная документацией boost :: iostreams :: zlib:
#include <fstream>
#include <iostream>
#include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/zlib.hpp>
int main(int argc, char** argv)
{
using namespace std;
using namespace boost::iostreams;
ifstream ifs(argv[1]);
ofstream ofs("out");
boost::iostreams::filtering_istreambuf in;
zlib_params p(
zlib::default_compression,
zlib::deflated,
zlib::default_window_bits,
zlib::default_mem_level,
zlib::default_strategy,
true
);
try
{
in.push(zlib_decompressor(p));
in.push(ifs);
boost::iostreams::copy(in, ofs);
ofs.close();
ifs.close();
}
catch(zlib_error& e)
{
cout << "zlib_error num: " << e.error() << endl;
}
return 0;
}
Я знаю, что мои тестовые данные неплохие;Я написал небольшую программу для вызова gzread () в тестовом файле;он успешно распакован ... поэтому я не понимаю, почему это не работает.
Заранее спасибо.
-Ice