📄 zfstream.h
字号:
#ifndef zfstream_h#define zfstream_h#include <fstream.h>#include "zlib.h"class gzfilebuf : public streambuf {public: gzfilebuf( ); virtual ~gzfilebuf(); gzfilebuf *open( const char *name, int io_mode ); gzfilebuf *attach( int file_descriptor, int io_mode ); gzfilebuf *close(); int setcompressionlevel( int comp_level ); int setcompressionstrategy( int comp_strategy ); inline int is_open() const { return (file !=NULL); } virtual streampos seekoff( streamoff, ios::seek_dir, int ); virtual int sync();protected: virtual int underflow(); virtual int overflow( int = EOF );private: gzFile file; short mode; short own_file_descriptor; int flushbuf(); int fillbuf();};class gzfilestream_common : virtual public ios { friend class gzifstream; friend class gzofstream; friend gzofstream &setcompressionlevel( gzofstream &, int ); friend gzofstream &setcompressionstrategy( gzofstream &, int );public: virtual ~gzfilestream_common(); void attach( int fd, int io_mode ); void open( const char *name, int io_mode ); void close();protected: gzfilestream_common();private: gzfilebuf *rdbuf(); gzfilebuf buffer;};class gzifstream : public gzfilestream_common, public istream {public: gzifstream(); gzifstream( const char *name, int io_mode = ios::in ); gzifstream( int fd, int io_mode = ios::in ); virtual ~gzifstream();};class gzofstream : public gzfilestream_common, public ostream {public: gzofstream(); gzofstream( const char *name, int io_mode = ios::out ); gzofstream( int fd, int io_mode = ios::out ); virtual ~gzofstream();};template<class T> class gzomanip { friend gzofstream &operator<<(gzofstream &, const gzomanip<T> &);public: gzomanip(gzofstream &(*f)(gzofstream &, T), T v) : func(f), val(v) { }private: gzofstream &(*func)(gzofstream &, T); T val;};template<class T> gzofstream &operator<<(gzofstream &s, const gzomanip<T> &m){ return (*m.func)(s, m.val);}inline gzofstream &setcompressionlevel( gzofstream &s, int l ){ (s.rdbuf())->setcompressionlevel(l); return s;}inline gzofstream &setcompressionstrategy( gzofstream &s, int l ){ (s.rdbuf())->setcompressionstrategy(l); return s;}inline gzomanip<int> setcompressionlevel(int l){ return gzomanip<int>(&setcompressionlevel,l);}inline gzomanip<int> setcompressionstrategy(int l){ return gzomanip<int>(&setcompressionstrategy,l);}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -