Afficher un message
Vieux 08/04/2008, 10h22   #8
Guillaume GOURDIN
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Ecriture en fin de fichier

> -- L'ouverture en écriture seulement vide toujours le fichier,
> s'il existe déjà. Il faut absolument ouvrir en
> bidirectionnel, si tu veux y écrire, mais tu ne veux pas
> détruire tout le contenu précédant.


Effectivement, c'set que j'ai fait en premier et je ne comprenais pas
pourquoi mon fichier était systématiquement vidé.

> -- Si tu veux utiliser seek pour aller à un endroit arbitraire,
> il faut ouvrir en mode binaire ; sinon, tu n'as droit à
> seeker qu'au deux bouts ou à un endroit où tu as fait un
> tell.


Ah bon? En fait, ce que j'ai fait, c'est utilisé un fstream, que j'ouvre
avec les flags par défaut (in et out, et il me semble que le mode
binaire n'est pas activé) et j'arrive à faire des seek. Le code exact
ressemble à ça :

fstream file;
file.open( filename );
file.seekp( -count-4, ios_base::end );

file.put( 1 );
file.put( 2 );
file.put( 3 );
...

> Donc, en supposant que tu saches déjà exactement où tu veux
> écrire, le code devient quelque chose comme :
>
> std:fstream dest(
> name, std::ios::in | std::ios:ut | std::ios::binary ) ;
> dest.seekp( position, std::ios::beg ) ;
> // Sorties vers dest, en prenant bien soin du nombre
> // des octets générés.


Ici quelle est la signification précise de 'std::ios::in'? Que l'on va
faire des seek? Qu'il ne fait pas effacer le contenu du fichier?

Merci beaucoup.
  Réponse avec citation
 
Page generated in 0,05227 seconds with 9 queries