
Yeah, I was awfully confused at first too. In the code I've got working, I use filtering_ostream for both compression and decompression, and use a back_inserter like this: vector<char> comp; bio::filtering_ostream cStream; cStream.push(bio::zlib_compressor() | bio::back_inserter(comp)); cStream.write(decompressedMemory, decompressedSize); vector<char> decomp; bio::filtering_ostream dStream; dStream.push(bio::zlib_decompressor() | bio::back_inserter(decomp)); dStream.write(&comp[0], comp.size()); bio::close(dStream); Brian On Wed, Nov 10, 2010 at 12:42 AM, 陳韋任 <chenwj@cs.nctu.edu.tw> wrote:
Dear all,
Some compressed data was stored in a vector<char> buf (don't know if it's a right way to store compressed data). I used the "buf" as a source, and tried to add a gzip_decompressor to restore those data. I have tried the following approach, but it doesn't work.
vector<char> buf;
/* fill in the buf */
namespace io = boost::iostreams; io::filtering_istream in(boost::make_iterator_range(buf)); in.push(io::gzip_decompressor());
What I got is an exception,
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector <std::logic_error>>' what(): chain complete Aborted
How can I compose a source which comes from a container, and add a gzip_decompressor to the source? Thanks in advance.
Regards, chenwj
-- Wei-Jen Chen (陳韋任) Programming Language and System Laboratory (EC131) Department of Computer Science, National Chiao Tung University
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users