Je lisais sur la compression dans les programmes et j'ai commencé à créer un nouveau projet simple, une fermeture à glissière (juste une fermeture à glissière, pas un omipper), mais je n'ai trouvé que zlib, et c'est pour C. Je sais que les bibliothèques C peuvent être Utilisé en C ++, mais j'aime utiliser les bibliothèques C ++. Est-ce que quelqu'un sait un bon à suggérer? P>
meilleures salutations. p>
7 Réponses :
Je suggérerais d'utiliser zlib. Il est conçu pour C, mais cela fonctionne bien en C ++. P>
L'utilisation de bibliothèques natives C ++ n'affecte vraiment que lorsque la bibliothèque est suffisamment grande et complexe qu'elle peut bénéficier d'une conception orientée objet. ZLIB est relativement simple et n'a pas besoin de fonctionnalités orientées objet. P>
La plupart des bibliothèques de compression que je connais sont écrites en C pour deux raisons: une, l'âge général des bons algorithmes de compression; et deux, la haute portabilité (et la stabilité) de C à travers les plates-formes. P>
Je suggère l'un des éléments suivants. Si vous voulez de bonnes licences, sélectionnez l'une des deux premières, sinon si vous êtes ouvert à l'utilisation de Code GPL, choisissez l'un des deux derniers. P>
Utilisez libzip: http://www.nih.at/libzip/ La licence est Jolie permissive et tout ce dont vous avez besoin, du code C ou C ++. P>
Zlib est fortement recommandé. Il est bien écrit et l'interface est assez propre. Je ne vois pas combien d'emballage C ++ peut simplifier les API. De plus, à mon avis, Zlib atteint un bon équilibre entre la vitesse de compression (DE) et la taille du fichier. BZIP2 est beaucoup plus lent alors que le rapport de compression de Lzo et UCL est pire. p>
L'interface ZLIB a l'air un peu bizarre pour moi. Je préfère le boost :: iostreams wrap, beaucoup saner.
zlib est bon, mais vous voudrez peut-être vérifier le LZMA SDK aussi (Vous pouvez compresser au format .7z, en plus de zip) p>
C'est ce que j'aime (c'est vraiment rapide et a un bon taux de compression): http://www.quicklz.com/ p>
Cela semble fonctionner parfaitement et facilement, merci.
Si vous compilez la bibliothèque C avec un compilateur C ++, cela fonctionnera probablement (puis être C ++).
Si vous allez créer un utilitaire de compression qui ne décrit pas / ne peut pas décompresser, ce qui pourrait être meilleur que
rm big_file code>?
Probablement? Pas probablement ... ça sera i> travailler.
@Carl c'est une bonne idée. @Mark lol
On dirait que j'aurais dû faire une réponse, je manque de la réputation!
Si vous compilez la bibliothèque avec le compilateur C, vous pouvez le lier de manière plus ou moins transparente de manière transparente. Mais oui, vous pourrez peut-être également la compiler avec le compilateur C ++.