Ticket #2411: istream_bzip2_success.cpp

File istream_bzip2_success.cpp, 1.6 KB (added by rbock@…, 14 years ago)

Using filtering_ostream instead of filtering_istream, it works as expected.

Line 
1#include <iostream>
2
3#include <boost/iostreams/filtering_stream.hpp>
4#include <boost/iostreams/device/back_inserter.hpp>
5#include <boost/iostreams/copy.hpp>
6
7#pragma GCC visibility push(default) // required when compiling with g++ -fvisibility=hidden
8#include <boost/iostreams/filter/bzip2.hpp>
9#pragma GCC visibility pop
10
11using namespace std;
12
13int main()
14{
15 string source("Original");
16 string bzip2String;
17 string sink;
18
19 try
20 {
21 // Create compressing stream based on original input
22 boost::iostreams::filtering_ostream compressingStream;
23 compressingStream.push(boost::iostreams::bzip2_compressor());
24 compressingStream.push(boost::iostreams::back_inserter(bzip2String));
25
26 compressingStream << source;
27
28 boost::iostreams::close(compressingStream);
29
30 cerr << "size of bzip2String: " << bzip2String.size() << endl;
31
32 // Create decompressing stream writing to sink
33 boost::iostreams::filtering_ostream decompressingStream;
34 decompressingStream.push(boost::iostreams::bzip2_decompressor());
35 decompressingStream.push(boost::iostreams::back_inserter(sink));
36
37 decompressingStream << bzip2String;
38
39 boost::iostreams::close(decompressingStream);
40
41 cerr << "Result: " << sink << endl;
42 }
43 catch(boost::iostreams::bzip2_error& error)
44 {
45 cerr << "Caught bzip2 error with code: " << error.error() << endl;
46 cerr << "data_error: " << boost::iostreams::bzip2::data_error << endl;
47 cerr << "data_error_magic: " << boost::iostreams::bzip2::data_error_magic << endl;
48 cerr << "config_error: " << boost::iostreams::bzip2::config_error << endl;
49 }
50}
51