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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
boost::iostreams::copy(in, ficOut, sizeUncompressed);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)