Bonjour à tous,
Je cherche actuellement une solution "élégante" pour décompresser une archive.
Vu que Boost est installé sur ma machine, pourquoi ne pas l'utiliser...
Mais voilà que :
Alors que j'ai installé Boost dans les règles de l'art. Effectivement cette lib n'est pas présente dans le dossier. Mais je comprend pas pourquoi il cherche ce truc...LINK : fatal error LNK1104: impossible d'ouvrir le fichier 'libboost_zlib-vc80-mt-1_33_1.lib'![]()
Pour info, voici mon code (donné en exemple sur le site de Boost)
Merci d'éclairer ma lanterne !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #include <iostream> #include <string> #include <fstream> #include <boost/iostreams/filtering_streambuf.hpp> #include <boost/iostreams/copy.hpp> #include <boost/iostreams/filter/zlib.hpp> int main() { std::string fichier = "test.gz"; using namespace std; ifstream file(fichier.c_str(), ios_base::in | ios_base::binary); boost::iostreams::filtering_streambuf<boost::iostreams::input> in; in.push(boost::iostreams::zlib_decompressor()); in.push(file); boost::iostreams::copy(in, cout); return 0; }![]()






Répondre avec citation





(par contre tu en trouveras à la pelle pour plein d'autres langages). Boost::iostream n'est pas du tout fait pour ça, il gère la compression/décompression avec gzip et bzip2. Or la compression/décompression n'a rien à voir avec les archives (pour rappel, les archives permettent de grouper plusieurs fichiers en un). On s'en rend particulièrement bien compte sous linux puisqu'on a d'une part le format .tar (archive uniquement, aucune compression) et les formats gzip, bzip2 (compression uniquement, pas d'archive). Si tu veux utiliser boost::iostream tu dois avoir des fichiers compressés et uniquement compressés (donc rien qui aie un rapport avec des archives, il n'a jamais été conçu pour lire le zip ou le tar puisqu'il ne contient aucune fonction permettant de choisir un fichier dans une archive). Si tu veux une biblio qui puisse lire le zip facilement, il y a wxWidgets. Sinon tu as la technique "je me casse pas le cul", tu appelles l'utilitaire unzip avec la ligne de commande (il existe pour toutes les plateformes, il suffit de le fournir avec ton programme).

Partager