Библиотеки сжатия для C++

Я читал о сжатии в программах, и я начал создавать новый простой проект, молнию (просто молнию, а не расстегнуть молнию), но я нашел только zLib, и это для C. Я знаю, что библиотеки C могут использоваться в C++, но я люблю использовать библиотеки C++. Кто-нибудь знает хороший совет?

С уважением.

7 ответов

Решение

Большинство известных мне библиотек сжатия написаны на C по двум причинам: одна - общий возраст хороших алгоритмов сжатия; и во-вторых, высокая мобильность (и стабильность) C на разных платформах.

Я предлагаю любое из следующего. Если вам нужны хорошие лицензии, выберите одну из двух лучших, в противном случае, если вы открыты для использования кода GPL, выберите одну из двух последних.

Вы можете сделать это легко, используя Boost iostream zlib filter

Я бы предложил использовать zlib. Он предназначен для C, но прекрасно работает в C++.

Использование собственных библиотек C++ действительно помогает только тогда, когда библиотека достаточно большая и сложная, что может принести пользу от объектно-ориентированного проектирования. zlib относительно прост и не нуждается в объектно-ориентированных функциях.

Используйте libzip: http://www.nih.at/libzip/ Лицензия довольно разрешительна и делает все, что вам нужно, из кода C или C++.

Zlib хорош, но вы можете также проверить LZMA SDK (вы можете сжать до формата.7z, в дополнение к zip)

Настоятельно рекомендуется zlib. Это хорошо написано, и интерфейс довольно чистый. Я не вижу, насколько обертка C++ может упростить API. Кроме того, на мой взгляд, zlib обеспечивает хороший баланс между (де) скоростью сжатия и размером файла. Bzip2 намного медленнее, в то время как степень сжатия LZO и UCL хуже.

Это то, что мне нравится (очень быстрая и хорошая степень сжатия): http://www.quicklz.com/

Другие вопросы по тегам