
Hi Chenwj, boost-users-bounces@lists.boost.org on Wednesday, November 10, 2010 9:43 AM:
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
it seems to me that "chain complete" is a very precise complaint. To use the filtering_istream you have to reverse natural order and push the source last. Simply try io::filtering_istream in; in.push(io::gzip_decompressor()); in.push(boost::make_iterator_range(buf)); Hope that helps, -- Christian Pfligersdorffer Software Engineering http://www.eos.info