Vorlesungsskript - Hochschule Emden/Leer
Vorlesungsskript - Hochschule Emden/Leer
Vorlesungsskript - Hochschule Emden/Leer
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
c○ Prof. Dr. B. Bartning, HS <strong>Emden</strong>/<strong>Leer</strong> Rumpfskript ” Informatik I/II“ (WS/SS 2010/11) 149<br />
❅<br />
ios {abstrakt}<br />
❅ ❅<br />
ostream istream<br />
❅ ❅<br />
iostream<br />
❅<br />
❅<br />
ofstream fstream ifstream<br />
Die Klassen, zu denen die Standard-Streamobjekte cout, cerr, cin gehören (ferner auch<br />
clog, dieses nur in C++(neu)) sind je nach C++(neu) und C++(alt) verschieden:<br />
• C++(neu)<br />
cout, cerr, clog sind vom Typ ostream,<br />
cin ist vom Typ istream.<br />
• C++(alt)<br />
cout, cerr sind vom Typ ostream withassign<br />
(ostream withassign ist von ostream abgeleitet, ähnlich wie ofstream),<br />
cin ist vom Typ istream withassign<br />
(istream withassign ist von istream abgeleitet, ähnlich wie ifstream).<br />
(12.63) Funktionen zum Schreiben<br />
(a) Sinnvoll ist die Benutzung der Elementfunktionen write. Diese ist folgendermaßen durch<br />
die Bibliothek vorgegeben:<br />
ostream& ostream::write(const char* ZeigerAufPuffer, int AnzBytes);<br />
Wirkungsweise:<br />
• Die Funktion liest genau AnzBytes Bytes ( ” Zeichen“) aus dem angegebenen Puffer ab<br />
der Adresse ZeigerAufPuffer und schreibt sie in die Ausgabedatei (Typ ostream oder<br />
abgeleiteter Typ, z. B. ofstream). Hierbei wird jedes Byte gelesen und geschrieben.<br />
Ein eventuell vorhandenes Nullbyte erhält keine Sonderbehandlung, es gilt als normales<br />
Byte.<br />
Für AnzBytes sollten nie eine direkte Zahl angegeben werden, sondern die Größe sollte<br />
immer durch den Compiler mit dem sizeof-Operator Op3j (5.14) berechnet werden.<br />
• Es ist nötig, die Anfangsadresse dessen, was geschrieben werden soll (z. B. Anfangsadresse<br />
eines Objekts, d. h. Zeiger auf Klassentyp), nach const char* zu konvertieren:<br />
Parameter ZeigerAufPuffer. Das ist nicht mit einem static cast (5.64a) möglich, sondern<br />
nur mit dem Operator reinterpret cast, s. Op2k/(10.24Anm4). Ersatzweise kann<br />
auch die ” missbilligte“ Typkonvertierung (char*) bzw. (const char *) genommen<br />
werden, s. Op3i/(5.64b).<br />
• Der Rückgabewert ist der Stream im Zustand nach dem Schreiben. Im Fehlerfall wird<br />
meist badbit gesetzt.<br />
Bsp s. (12.66).<br />
↑↑ Angegeben ist für AnzBytes der Typ aus C++(alt) (int); in C++(neu) ist der Typ streamsize.<br />
(b) Manchmal kann die Funktion<br />
ostream& ostream::flush()<br />
nützlich sein; sie leert den Ausgabepuffer, so dass der Inhalt tatsächlich geschrieben wird.