给偶自己的网站做广告,摘录自http://www.cpp-prog.com/2009/0114/52_2.html片段
使用Boost.Iostreams实现流方式的bzip2格式压缩、解压操作。
注: 代码里的file_sink和file_source有一个更好的替代品是使用file_descriptor_sink和file_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.msc第7行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支持的方式类似。 更详细方式请参考联机文档