cout
in eine Datei sammel.dat
umgeleitet werden. Der Grund für diese Möglichkeit der Zuweisung,
die in den bisher genannten Stream-Klassen nicht vorhanden war, liegt daran,
daß die vier oben genannten Standard-Kanäle in Wirklichkeit
gar keine Objekte der Klassen ostream
und istream
sind,
sondern Objekte der abgeleiteten Klassen istream_withassign
und
ostream_withassign
. Zu weiteren Informationen zu diesem Thema vgl.
ofstream datei("sammel.dat", ios::app);
...
cout = datei;
// cout wird in die geöffnete Datei umgeleitet
cout << "dieser text soll noch dazu"; // String wird
in Datei geschrieben
Man sollte jedoch beachten, daß das Objekt datei
als lokales
Objekt am Blockende automatisch geschlossen wird.
Hat man jeodch -- wie im Beispiel -- cout
umgeleitet, so wird mit dem Objekt datei
auch
cout
geschlossen! Folglich kann anschließend auf cout
nicht mehr geschrieben werden. Da dies i.allg. nicht erwünscht sein dürfte,
sollte man -- bevor man die Umleitung vornimmt -- das alte Objekt in einer globalen
Variablen zwischenzuspeichern.
ostream_withassign saveCout;
...
saveCout =cout;
...
// Umleiten und Ausgabe in eine Datei
cout = saveCout; // cout restaurieren
Nachdem alle Ausgaben in die umgeleitete Datei vorgenommen wurden, kann dann der Standardausgabekanal zurückgesetzt werden.