我無法獲得boost :: iostreams的zlib過濾器忽略gzip頭......似乎將zlib_param的default_noheader設置爲true,然後調用zlib_decompressor()產生'data_error'錯誤(錯誤的頭部檢查)。這告訴我zlib仍然期望找到標題。 有沒有人獲得boost :: iostreams :: zlib解壓縮數據而不用頭文件?我需要能夠讀取和解壓縮沒有雙字節標題的文件/流。任何援助將不勝感激。boost :: iostreams :: zlib :: default_noheader似乎被忽略
這裏是由升壓::提供的樣本程序的修改版本的iostream :: 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