Наличие всех ваших уникальных идентификаторов действительно облегчит вашу жизнь.
В повышении:: iostreams там является возможностью использовать zlib, gzip и bzip2 форматы.
Вы находите его из http://www.boost.org/
В zlib исходном архиве существует вклад, названный "мини-zip".
"мини-zip" является рядом файлов, которые можно использовать для проигрывания с .zip файлами. Базовые услуги, в которых Вы нуждаетесь, уже там:
Конечно, это не объектно-ориентировано (и я уверен, что это не было целью создателя мини-zip), но запись, что простой объект ориентировался, обертка должна быть легкой.
легкий zlib firstobject остается межплатформенным; это имеет zlib в единственном файле easyzlib.c и выставляет только ezcompress и функции ezuncompress с дополнительной функцией определения требования к памяти прежде, чем выделить точный размер.
Вы могли попытаться захватить код из другого проекта FOSS. ScummVM, например, имеет очень портативную обертку Zlib (реализация, заголовок) со всеми функциями, в которых Вы нуждаетесь плюс уровень OO для взаимодействия через интерфейс в общем с любым другим видом архива.
Возможно, это - хорошая начальная точка? Функции обертки являются полностью автономными и портативными (heck, они даже работают над DS Nintendo), но уровень OO зависит от многих пользовательских классов, которые может быть трудно добавить к Вашему собственному проекту.
GZStream заслуживает внимания. Это хорошая кроссплатформенная оболочка для ZLib, которая расширяет классы iostream STL.
http://www.cs.unc.edu/Research/compgeom/gzstream/
Чем хороша эта оболочка над некоторыми из во-вторых, если вы работаете с очень большими архивами, вам не нужно загружать весь набор данных в память.
Если вы будете использовать minizip - обратите внимание, эта версия, поставляемая с zlib 1.2.3, имеет ограничение на 2GB результирующий zip файл. IT будет создавать zip с размером >2GB - но вы не сможете их открыть...