[iostreams] Décompresser un "bloc" de données d'une taille définie
Bonjour,
j'essaie de lire des données depuis un flux boost::iostreams mais je ne vois pas comment lire un bloc d'une taille définie
mon flux est initialisé de la manière suivante :
Code:
1 2 3 4 5 6 7 8
| std::ifstream ficIn(filename.c_str(), std::ios_base::in | std::ios_base::binary);
// reading file header
[...]
// deflating file data
boost::iostreams::filtering_streambuf<boost::iostreams::input> in;
in.push(boost::iostreams::zlib_decompressor());
in.push(ficIn); |
le fichier ouvert par ficIn est un fichier zip
j'aimerai lire le bloc de données du bloc compressé et l'envoyer dans un buffer ou dans un fichier
je n'ai pas accès à une méthode read et les opérateurs ne sont pas reconnus
avec copy ça ne semble pas fonctionner et je pense que c'est parcequ'il lit l'intégralité du flux d'entrée (ficIn)
Citation:
Envoyé par iostreams::copy
The function template copy reads data from a given model of Source and writes it to a given model of Sink until the end of stream is reached.
j'ai essayé des 2 manières suivantes :
Code:
boost::iostreams::copy(in, ficOut, sizeUncompressed);
Code:
boost::iostreams::copy(in, ficOut, sizeUncompressed);
dans les 2 cas ça se termine inopinément (crash)
edit : mon but est de pouvoir extraire d'une archive (comme un zip) un bloc compressé directement vers un fichier (décompressé via le filtering_streambuf)