我正在寻找一个将zlib提炼为:
的包装器我看到很多关于zlib库的包装器,比如codeproject.com,但它们都是特定于平台的,以便提供解压缩到文件/内存缓冲区/管道的附加平台特定功能。
答案 0 :(得分:12)
在boost :: iostreams中,可以使用zlib,gzip和bzip2格式。
找到它答案 1 :(得分:9)
在zlib源档案中,有一个名为“minizip”的贡献。
“minizip”是一组可用于播放.zip文件的文件。您需要的基本服务已经存在:
当然,这不是面向对象的(我确信这不是minizip创建者的目标),但编写一个简单的面向对象的包装器应该很容易。
答案 2 :(得分:3)
firstobject's easy zlib保持跨平台;它在单个文件easyzlib.c中有zlib,并且只显示ezcompress和ezuncompress函数,并增加了在分配精确大小之前确定内存需求的功能。
答案 3 :(得分:2)
您可以尝试从另一个FOSS项目中获取代码。例如,ScummVM具有高度可移植的Zlib包装器(implementation,header),具有您需要的所有功能,以及一个OO层,用于与任何其他类型的存档进行通用接口。
也许这是一个很好的起点?包装器功能完全独立且可移植(哎呀,它们甚至可以在Nintendo DS上运行),但是OO层依赖于许多自定义类,这些类可能很难添加到您自己的项目中。
答案 4 :(得分:2)
GZStream值得一看。这是一个很好的跨平台包装器,它绕ZLib扩展了STL iostream类。
http://www.cs.unc.edu/Research/compgeom/gzstream/
这个包装器对其他一些包装器的好处是,如果你使用非常大的存档,则不需要将整个数据集加载到内存中。
答案 5 :(得分:2)
这是一个旧线程,但我想我会抛出Boost的ZLib包装器:
http://www.boost.org/doc/libs/1_47_0/libs/iostreams/doc/classes/zlib.html
答案 6 :(得分:1)
如果您将使用minizip - 请注意,zlib 1.2.3附带的版本有2GB的zip文件限制。 IT将生产尺寸> 2GB的拉链 - 但你将无法打开它们......
答案 7 :(得分:0)
您还可以通过自动检测输入格式来检查此C ++ Zlib包装器: https://github.com/mateidavid/zstr