尝试使用 boost 将 zip 文件解压缩到内存中,但它不起作用
Tried to decompress a zip file into memory with boost,but it doesn't work
我尝试用 boost zlib 解压缩一个 zip 文件,但它不起作用,我的 boost 版本是 1.75,它是已经构建的二进制文件,我用 VS 2013 CE 尝试了下面的代码
#include<iostream>
#include<fstream>
#include<algorithm>
#include<iterator>
#include<sstream>
#include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/zlib.hpp>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
ifstream src;
ofstream dst;
stringstream ss;
try
{
src.open("d:\202012303333629003180526491.txt.zip", ios::in | ios::binary);
dst.open("to.zip", ios::out | ios::binary);
copy(istreambuf_iterator<char>(src),
istreambuf_iterator<char>(),
ostreambuf_iterator<char>(ss));
cout << ss.str() << endl;
std::stringstream decompressed;
boost::iostreams::filtering_streambuf<boost::iostreams::input> in;
in.push(boost::iostreams::zlib_decompressor());
in.push(ss);
boost::iostreams::copy(in, decompressed);
string decompressestr = decompressed.str();
src.close();
dst.close();
return 0;
}
catch (const std::exception& error)
{
std::cerr << error.what() << std::endl;
return (EXIT_FAILURE);
}
}
异常是 zlib 错误:iostream 流错误,知道我做错了什么吗?非常感谢
zlib 不处理 zip 文件。 zlib 可以处理 zlib、gzip 和原始 deflate 流。
我尝试用 boost zlib 解压缩一个 zip 文件,但它不起作用,我的 boost 版本是 1.75,它是已经构建的二进制文件,我用 VS 2013 CE 尝试了下面的代码
#include<iostream>
#include<fstream>
#include<algorithm>
#include<iterator>
#include<sstream>
#include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/zlib.hpp>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
ifstream src;
ofstream dst;
stringstream ss;
try
{
src.open("d:\202012303333629003180526491.txt.zip", ios::in | ios::binary);
dst.open("to.zip", ios::out | ios::binary);
copy(istreambuf_iterator<char>(src),
istreambuf_iterator<char>(),
ostreambuf_iterator<char>(ss));
cout << ss.str() << endl;
std::stringstream decompressed;
boost::iostreams::filtering_streambuf<boost::iostreams::input> in;
in.push(boost::iostreams::zlib_decompressor());
in.push(ss);
boost::iostreams::copy(in, decompressed);
string decompressestr = decompressed.str();
src.close();
dst.close();
return 0;
}
catch (const std::exception& error)
{
std::cerr << error.what() << std::endl;
return (EXIT_FAILURE);
}
}
异常是 zlib 错误:iostream 流错误,知道我做错了什么吗?非常感谢
zlib 不处理 zip 文件。 zlib 可以处理 zlib、gzip 和原始 deflate 流。