2009-10-14 19 views
7

Czytałem o kompresji w programach i zacząłem tworzyć nowy prosty projekt, zamek błyskawiczny (tylko zamek błyskawiczny, nie rozpakowanie), ale znalazłem tylko zLib, i to dla C. Wiem, że Biblioteki C można używać w C++, ale lubię używać bibliotek C++. Czy ktoś wie, który dobry do zaproponowania?Biblioteki kompresji dla C++

Pozdrawiam.

+5

Jeśli skompilujesz bibliotekę C z kompilatorem C++, prawdopodobnie będzie działać (a następnie będzie C++). –

+3

Jeśli zamierzasz utworzyć narzędzie do kompresji, które nie może/nie może rozpakować, co może być lepsze niż 'rm BIG_FILE'? –

+0

prawdopodobnie? prawdopodobnie ... to się nie uda. –

Odpowiedz

5

Większość bibliotek kompresji, o których wiem, jest napisanych w C z dwóch powodów: jeden, ogólny wiek dobrych algorytmów kompresji; i po drugie, wysoka przenośność (i stabilność) C na platformach.

Proponuję którykolwiek z poniższych warunków. Jeśli chcesz mieć dobre licencje wybierz jedną z dwóch najlepszych, w przeciwnym razie, jeśli jesteś otwarty na używanie kodu GPL, wybierz jedno z dwóch ostatnich.

1

Proponuję użyć zlib. Jest przeznaczony dla C, ale działa dobrze w C++.

Używanie natywnych bibliotek C++ pomaga tylko wtedy, gdy biblioteka jest wystarczająco duża i złożona, aby mogła korzystać z projektowania obiektowego. Zlib jest względnie prosty i nie wymaga funkcji zorientowanych obiektowo.

1

zlib jest stanowczo zalecane. Jest dobrze napisany, a interfejs jest dość czysty. Nie widzę, ile wrapper C++ może uprościć API. Ponadto, moim zdaniem, zlib osiąga dobrą równowagę między (de) kompresją i rozmiarem pliku. Bzip2 jest zbyt wolny, a współczynnik kompresji LZO i UCL jest zbyt zły. Użyj zlib, proszę.

+0

Interfejs Zlib wygląda dla mnie trochę dziwnie. Preferuję wrap :: iostreams wrap, dużo saner. – piotr

2

Zlib jest dobra, ale może warto sprawdzić LZMA SDK jak dobrze (można skompresować do formatu .7z, oprócz zip)