les flux en C++ - C++ - Programmation
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.
Marsh Posté le 16-12-2002 à 05:08:32
1) Le langage peut maintenir un buffer, l'OS maintient toujours le sien derrière.
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...
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.
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   
  
 
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...
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.