Giriş
Şu satırı dahil ederiz.
Şöyle yaparız.
Örnek
Şu satırı dahil ederiz.
#include <boost/iostreams/filtering_stream.hpp>
#include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/gzip.hpp>
filtering_ostream aslında bir filtering_streambuf nesnesidir. Şöyledir yani bir typdef'tir.typedef boost::iostreams::filtering_streambuf<boost::iostreams::out>
filtering_ostream
;
ConstructorŞöyle yaparız.
bo::filtering_ostream out;
push metoduÖrnek
Sıkıştırılmış veriyi açmak için şöyle yaparız. filtering_ostream nesnesine bir gzip_decompressor ve buffer geçilir.
namespace io = boost::iostreams; //<-- good practice
typedef std::vector<char> buffer_t;
void CompressionUtils::Inflate(const buffer_t &compressed,
buffer_t &decompressed)
{
io::filtering_ostream os;
os.push(io::gzip_decompressor());
os.push(io::back_inserter(decompressed));
//Write data to output stream
io::write(os, compressed.data(), compressed.size());
}
Örnek
Sıkıştırmak için şöyle yaparız.
std::ofstream ofile("hello.gz", std::ios_base::out | std::ios_base::binary);
bo::filtering_ostream out;
out.push(bo::gzip_compressor());
out.push(ofile);
out << "This is a gz file\n";
Okumak için şöyle yaparız.std::ifstream ifile("hello.gz", std::ios_base::in | std::ios_base::binary);
bo::filtering_streambuf<bo::input> in;
in.push(bo::gzip_decompressor());
in.push(ifile);
boost::iostreams::copy(in, std::cout);
Hiç yorum yok:
Yorum Gönder