
On 2010-06-11 13:06:46 +0200, Philipp Kraus said:
On 2010-06-11 09:41:40 +0200, Roland Bock said:
Kraus Philipp wrote:
Hi,
I have implemented this litte code to compress a file
bio::filtering_streambuf< bio::input > l_deflate; switch (m_compress) { case gzip : l_deflate.push( bio::gzip_compressor() ); break; case bzip2 : l_deflate.push( bio::bzip2_compressor() ); break; }
l_deflate.push( bio::file_source(p_str, BOOST_IOS::binary) );
I need only the number of compressed bytes of l_deflate. I try to
use l_deflate.size() but it returns only a fixed number.
How I can read the number of compressed bytes?
Thanks
Phil
The only method I know is to add a small filter which counts the Bytes.
I have found this http://www.boost.org/doc/libs/1_43_0/boost/iostreams/filter/counter.hpp Can I use this class? I don't know how I can use the class (must I only create a new object and push it to my l_deflate) ?
I have add this code: bio::filtering_streambuf< bio::input > l_deflate; switch (m_compress) { case gzip : l_deflate.push( bio::gzip_compressor() ); break; case bzip2 : l_deflate.push( bio::bzip2_compressor() ); break; } // create counter structures bio::counter l_counter; l_deflate.push( boost::ref(l_counter) ); l_deflate.push( bio::file_source(p_str1, BOOST_IOS::binary) ); but l_counter.characters() returns always zero. At next I have declared a filter_ostream and copy l_deflate to the ostream in which I pushed the l_counter. At this I run into a bus error. For testing I've copy the l_deflate to std::cout and I can see the compressed data. Thanks for help