Boost Users :
Subject: Re: [Boost-users] [boost::iostreams] How to get number of bytes written?
From: Milan Svoboda (milan.svoboda_at_[hidden])
Date: 2008-11-28 03:49:42
> Milan Svoboda wrote:
>> Hi All,
>> I'm using boost::iostreams and its filters to compress and decompress
>> data. However I'm not able to retrieve number of bytes really written
>> (number of bytes after a compression).
>> Does anybody know how to do that?
>> I'm currently using following code:
>> coffset if offset to where start with writing of compressed data and
>> after call it shall contain the length of the file. This works good to
>> get length of the compressed block unless block of data is written
>> somewhere in the middle of the file thus end of file is not the same as
>> the last offset where compressed data has been written to.
>> io::file_descriptor file(fd);
>> file.seek(coffset, ios_base::beg);
>> io::filtering_ostream out;
>> // Push the compression filter (bl->type.push(out);)
>> io::write(out, buf, length);
>> // Destroying the object 'out' causes all filters to
>> // flush.
>> // Update raw length of the file.
>> coffset = file.seek(0, ios_base::end);
> Maybe I dont quite understand the problem...
I need to know number of bytes after compression. boost::iostreams::write
returns number of bytes that has been passed to filter but there is no direct
way to get number of bytes that filter returned...
> Could you just write a simple pass-through filter which counts the bytes
> only? Something like:
> io::filtering_ostream out;
> out.push(passthru()); // <- this just counts bytes
Great! This looks like a right way. Thank you!
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net