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.