30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

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.

16.6 Streams 527<br />

Files bereits nach dem Vornamen erreicht ist? In das Lesen und Analysieren<br />

von Input-Daten kann man unglaublich viel Intelligenz und Kreativität stecken,<br />

bis man wirklich e<strong>in</strong>igermaßen sauber und sicher mit allen möglichen<br />

Eventualitäten umgehen kann. Alle<strong>in</strong> das wäre e<strong>in</strong> größeres Kapitel wert,<br />

jedoch würde dieses den Rahmen des Buchs sprengen. Deshalb belasse ich es<br />

hier bei e<strong>in</strong>er kurzen Erwähnung der Methoden, die man zur Verfügung hat,<br />

um e<strong>in</strong>e Implementation sauber zu gestalten.<br />

Wenden wir uns zuerst e<strong>in</strong>mal den allgeme<strong>in</strong>en Methoden zu, die es erlauben,<br />

den Status e<strong>in</strong>es Streams abzufragen:<br />

bool good(): Liefert Auskunft darüber, ob die bisherigen Operationen so<br />

weit gut gelaufen s<strong>in</strong>d, dass auch e<strong>in</strong>e weitere Lese- oder Schreiboperation<br />

funktionieren könnte. Sollte man als return-Value false bekommen,<br />

dann funktioniert sicher ke<strong>in</strong>e weitere Operation. Sollte man true<br />

bekommen, dann wird allerd<strong>in</strong>gs ke<strong>in</strong>e Garantie übernommen, dass die<br />

darauf folgende Operation auch erfolgreich ist, denn e<strong>in</strong> Problem lässt<br />

sich ja erst erkennen, wenn es bereits aufgetreten ist.<br />

bool eof(): Liefert bei e<strong>in</strong>em istream true, wenn das Ende des Streams<br />

erreicht wurde und daher ke<strong>in</strong>e weiteren Daten mehr zum Lesen zur<br />

Verfügung stehen.<br />

bool fail(): Liefert true, wenn jegliche folgende Operation sicher fehlschlagen<br />

würde.<br />

bool bad(): Liefert true, wenn der Stream korrupt ist. Ist quasi die Inverse<br />

zu bool good().<br />

iostate rdstate(): Liefert als return-Value die I/O Status Flags.<br />

void clear(iostate flags = goodbit): Löscht bestimmte (oder ohne<br />

expliziten Parameter alle) I/O Status Flags.<br />

void setstate(iostate flags): Setzt bestimmte I/O Status Flags.<br />

bool operator !() const: Kurzform für !my_stream.fail().<br />

Um den Input etwas gezielter als nur mit dem Operator

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!