07.10.2013 Aufrufe

Vorlesungsskript - Hochschule Emden/Leer

Vorlesungsskript - Hochschule Emden/Leer

Vorlesungsskript - Hochschule Emden/Leer

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!