2009-10-14 14 views
7

Ich las über Komprimierung in Programmen und ich begann ein neues einfaches Projekt zu erstellen, einen Reißverschluss (nur ein Reißverschluss, kein Entzipper), aber ich fand nur zLib, und es ist für C. Ich weiß das C-Bibliotheken können in C++ verwendet werden, aber ich verwende gerne C++ - Bibliotheken. Kennt jemand einen guten Vorschlag?Compression Libraries für C++

Mit freundlichen Grüßen.

+5

Wenn Sie die C-Bibliothek mit einem C++ - Compiler kompilieren, wird es wahrscheinlich funktionieren (und dann C++ sein). –

+3

Wenn Sie ein Komprimierungsprogramm erstellen, das nicht dekomprimiert/nicht dekomprimiert werden kann, was könnte besser sein als 'rm BIG_FILE'? –

+0

wahrscheinlich? nicht wahrscheinlich ... es wird funktionieren. –

Antwort

5

Die meisten Komprimierungsbibliotheken, die ich kenne, sind aus zwei Gründen in C geschrieben: eins, das allgemeine Alter guter Komprimierungsalgorithmen; und zwei, die hohe Portabilität (und Stabilität) von C über Plattformen.

Ich schlage eine der folgenden Möglichkeiten vor. Wenn Sie gute Lizenzen haben möchten, wählen Sie eines der beiden besten aus. Wenn Sie GPL-Code verwenden möchten, wählen Sie eines der beiden letzten.

1

Ich würde vorschlagen, zlib verwenden. Es ist für C gedacht, funktioniert aber in C++ gut.

Die Verwendung von nativen C++ - Bibliotheken hilft nur, wenn die Bibliothek ausreichend groß und komplex ist, dass sie von objektorientiertem Design profitieren kann. zlib ist relativ einfach und benötigt keine objektorientierten Funktionen.

1

zlib wird dringend empfohlen. Es ist gut geschrieben und die Schnittstelle ist ziemlich sauber. Ich sehe nicht, wie viel ein C++ - Wrapper APIs vereinfachen kann. Darüber hinaus erreicht zlib aus meiner Sicht eine gute Balance zwischen (De-) Kompressionsgeschwindigkeit und Dateigröße. Bzip2 ist zu langsam, während das Komprimierungsverhältnis von LZO und UCL zu schlecht ist. Bitte benutze zlib.

+0

Zlib-Schnittstelle sieht ein bisschen komisch zu mir. Ich bevorzuge den Boost :: Iostreams Wrap, viel besser. – piotr

2

Zlib ist gut, aber man könnte die LZMA SDK auch (man könnte komprimieren Format 7z, zusätzlich zu zip)