2009-10-14 19 views
7

Stavo leggendo sulla compressione nei programmi e ho iniziato a creare un nuovo progetto semplice, una cerniera (solo una cerniera, non un decompressore), ma ho trovato solo zLib, ed è per C. So che Le librerie C possono essere utilizzate in C++, ma mi piace usare le librerie C++. Qualcuno ne sa qualcosa di buono da suggerire?Librerie di compressione per C++

I migliori saluti.

+5

Se si compila la libreria C con un compilatore C++, probabilmente funzionerà (e quindi sarà C++). –

+3

Se si intende creare un'utilità di compressione che non può/non può decomprimere, cosa potrebbe essere migliore di 'rm BIG_FILE'? –

+0

probabilmente? probabilmente non ... funzionerà. –

risposta

5

La maggior parte delle librerie di compressione che conosco sono scritte in C per due motivi: uno, l'età generale dei buoni algoritmi di compressione; e due, l'alta portabilità (e stabilità) di C attraverso le piattaforme.

Suggerisco uno dei seguenti. Se vuoi buone licenze, seleziona uno dei primi due, altrimenti se sei aperto a utilizzare il codice GPL scegli uno degli ultimi due.

1

Suggerirei di usare zlib. È progettato per C, ma funziona bene in C++.

L'utilizzo di librerie C++ native aiuta solo quando la libreria è sufficientemente grande e complessa da poter trarre vantaggio dalla progettazione orientata agli oggetti. zlib è relativamente semplice e non ha bisogno di funzionalità orientate agli oggetti.

1

zlib è fortemente raccomandato. È ben scritto e l'interfaccia è abbastanza pulita. Non vedo quanto un wrapper C++ possa semplificare le API. Inoltre, a mio avviso, zlib raggiunge un buon equilibrio tra (de) velocità di compressione e dimensioni del file. Bzip2 è troppo lento mentre il rapporto di compressione di LZO e UCL è troppo cattivo. Usa zlib, per favore.

+0

L'interfaccia Zlib mi sembra un po 'strana. Preferisco la spinta: iostreams si avvolgono, molto più sani. – piotr

2

Zlib è buona, ma si potrebbe voler controllare il LZMA SDK pure (si potrebbe comprimere a .7z formato, oltre a zip)