les flux en C++

les flux en C++ - C++ - Programmation

Marsh Posté le 14-12-2002 à 21:36:06    

2 questions:
 
1- Quels est la diff entre un flux bufférisé et non bufférisé.Je croyais que tous les accés à des fichiers passer par des buffers  :??:  
2- Comment faire pour écrire une structure dans un fichier,
l'opérateur << de la classe fstream ne le permet pas.

Reply

Marsh Posté le 14-12-2002 à 21:36:06   

Reply

Marsh Posté le 15-12-2002 à 20:24:13    

1) de manière générale, tu peux utiliser un flux tamponné quand tu travailles avec un fichier, et tu peux avoir à utiliser un flux non tamponné si tu travailles avec un périphérique.
 
2)  
 
ofstream yo;
 
tu utilises yo.write(), ou tu implémentes l'opérateur << de la classe que tu souhaites pouvoir écrire.

Reply

Marsh Posté le 16-12-2002 à 05:08:32    

1) Le langage peut maintenir un buffer, l'OS maintient toujours le sien derrière.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 16-12-2002 à 10:17:25    

ok donc ça marche comme ça:
flux non bufférisé: simple buffer
flux bufférisé: double buffer
l'avantage que cela apporte ne me saute pas aux yeux...

Reply

Marsh Posté le 17-12-2002 à 06:09:13    

Les appels système sont lents: ~100 cycles processeur rien que pour le changement de contexte.
Et si, pour une raison X ou Y le périphérique n'a pas de buffer alloué par le système, les temps d'accès peuvent monter à 10 ms pour un DD, et pire encore pour les CD-ROMs et disquettes.
 
Si on s'amuse à écrire un gros fichier octet par octet, ça peut être gênant.
Donc, le C&C++ offrent des méthodes d'accès maintenant un buffer interne au programme.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 18-12-2002 à 20:32:59    

ça sert à quoi de redefinir son buffer I/O, par ex en C à l'aide de "setbuf( stream1, buf )"
si on pouvait me filer un exemple d'utilisation ça serait cool  :jap:  
 

Reply

Marsh Posté le 18-12-2002 à 21:59:58    

des bricolages, de style redirection de flux.
 
par exemple en C++, tu peux rediriger cout,clog,cerr dans un fichier comme ça:
 
ofstream LogFile("my_project.log" );
 
cout.rdbuf( LogFile.rdbuf() );
clog.rdbuf( LogFile.rdbuf() );
cerr.rdbuf( LogFile.rdbuf() );
 
comme ça tout ce qui est envoyé dans le le log ou en erreur c'est loggé dans un fichier...


Message édité par bjone le 18-12-2002 à 22:00:42
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed