On 24 fév, 13:55, James Kanze <james.ka...@gmail.com> wrote:
> Deux solutions, selon la taille. La plus simple, sans doute, si
> la taille n'est pas trop grosse, c'est de lire toute la section
> d'un coup dans un std::string, puis utiliser std::istringstream.
> Pour ce faire, on peut se servir de la contiguïté de la mémoire
> dans std::string. Ce n'est pas actuellement garantie, mais elle
> le sera dans la prochaine version de la norme, et dans les
> faits, toutes les implémentations actuelles utilisent de la
> mémoire contigue. Donc :
>
> std::string buffer( taille, '\0' ) ;
> file.read( &buffer[ 0 ], taille ) ;
> std::string subfile( buffer ) ;
>
Aujourd'hui la taille devient mon problème.
> Sinon, un streambuf filtrant pourrait faire l'affaire. Voir mes
> articles àhttp://kanze.james.neuf.fr/articles-fr.html, surtout
> le seconde, qui traite prèsqu'exactement ton cas.
J'ai passé pas mal de temps sur ton article et ton code, il va falloir
que je potasse le streambuf pour l'instant j'ai du mal à tout
comprendre, mais ça va venir.
>
> Et en passant, tu es bien au courant que si le flux n'est pas en
> mode binaire, les seuls streampos valides sont les valeurs
> renvoyées par tellg.
>
J'utilise tellg, j'imagine que tu fais référence à l'autre qui est
tellp.
Dans ma doc (du web) j'ai en résumé : "utiliser tellg pour les flux en
entrée et tellp pour les flux en sortie".
Il n'est pas fait mention de flux binaire ou texte, la définition est
elle fausse ?
Merci.