2009-10-14 3 views
7

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

С наилучшими пожеланиями.

+5

Если вы скомпилируете библиотеку C с помощью компилятора C++, это, вероятно, будет работать (а затем будет C++). –

+3

Если вы собираетесь создать утилиту сжатия, которая не может/не может распаковываться, что может быть лучше, чем 'rm BIG_FILE'? –

+0

возможно? не возможно ... это будет работать. –

ответ

5

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

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

1

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

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

1

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

1

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

+0

Интерфейс Zlib выглядит немного странно для меня. Я предпочитаю ускорение: iostreams wrap, много saner. – piotr

2

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

Смежные вопросы