Afficher un message
Vieux 25/02/2008, 20h36   #3
philippe.lrx@gmail.com
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Manipuler une sous zone d'un ifstream avec un autre ifstream

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.
  Réponse avec citation
 
Page generated in 0,04883 seconds with 9 queries