使用Boost.Iostreams实现bzip2格式文件流

来源:互联网 发布:尹恩惠 知乎 编辑:程序博客网 时间:2024/04/29 21:22

给偶自己的网站做广告,摘录自http://www.cpp-prog.com/2009/0114/52_2.html片段

 

使用Boost.Iostreams实现流方式的bzip2格式压缩、解压操作。


注: 代码里的file_sinkfile_source有一个更好的替代品是使用file_descriptor_sinkfile_descriptor_source。因为前者会经过std::codecvt界面的编码转换操作,这里我们不需要这种转换,所以后者更合适。不过要麻烦一点的是要在代码里多写几个字母,加一个头文件<boost/iostreams/device /file_descriptor.hpp>以及要在工程中加入文件"<BOOST>/libs/iostreams/src /file_descriptor.cpp"。

 注意:要使上面的程序能正确编译,必须为Boost.Iostreams加入bzip2支持,方法如下:1.下载bzip2库并解压(http://www.bzip.org)2.编译bzip2库    gcc/mingw   进入msys, make -f makefile    C++ Builder 参考偶的blog    VC          nmake -f makefile.msc(默认是多线程DLL调试“-MD”,可以修改makefile.msc7行CFLAGS=里的-MD-MT-MTd-MDd,然后分别重新编译保存成不同的lib文件备用)3.在工程中加入BOOST_IOSTREAMS_NO_LIB预定义,头文件搜索路径里加上bzip2库的路径,并把刚才生成的bzip2库文件和下面这个文件加入工程:    "<BOOST>/libs/iostreams/src/bzip2.cpp"4.重新编译注,Boost.Iostreams也自带了zlib/gz格式的支持,加入zlib支持的方式类似。更详细方式请参考联机文档

原创粉丝点击