
On 26/07/2013 01:37, Stephen Greenfield wrote:
Partially asked in another question, but so far unanswered: Once I create a filtering_streambuf that is connected to the zlib_compressor() and the output file, how do I then construct an object that can accept data from the Stream Insertion Operator?
void CompressUsingFilteringStreambuf() { std::ofstream myFile("hello.z", std::ios_base::out | std::ios_base::binary);
boost::iostreams::filtering_streambufboost::iostreams::output out; out.push(boost::iostreams::zlib_compressor()); out.push(myFile);
// MY QUESTION: How can I use the "stream insertion" operator (<<) // to go through the filtering_streambuf // and place compressed text into myFile?
// HOW DO I CREATE someStream? someStream << "text I want to be compressed and end up in the file...";
myFile.close(); }
I have scoured the documentation and the web looking for the answer -- and come up empty.
Stephen
Try: std::ofstream myFile("hello.z", std::ios_base::out | std::ios_base::binary); boost::iostreams::filtering_streambufboost::iostreams::output out; out.push(boost::iostreams::zlib_compressor()); out.push(myFile); std::ostream os(&out); os << "text I want to be compressed and end up in the file..." On input it would be something like: std::ifstream myFile( "hello.z", std::ios::in | std::ios::binary ); boost::iostreams::filtering_streambuf< boost::iostreams::input > in; in.push( boost::iostreams::gzip_decompressor() ); in.push( ifs ); std::istream is( &in ); is >> text; Ken Appleby Soft Optics Ltd