07.10.2013 Aufrufe

Vorlesungsskript - Hochschule Emden/Leer

Vorlesungsskript - Hochschule Emden/Leer

Vorlesungsskript - Hochschule Emden/Leer

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

c○ Prof. Dr. B. Bartning, HS <strong>Emden</strong>/<strong>Leer</strong> Rumpfskript ” Informatik I/II“ (WS/SS 2010/11) 154<br />

zessorabhängige Byte-Reihenfolge low/high oder high/low). Daher sind Binärdateien nicht<br />

immer zwischen verschiedenen Plattformen portabel. Legt man größeren Wert auf Portabilität,<br />

empfiehlt sich die Abspeicherung von Zahlen als Text (als Ziffernfolgen), da Textdateien<br />

portabel sind (nach ggf. Umformen von unterschiedlichen Zeilenende-Repräsentationen<br />

beispielsweise zwischen DOS/Windows und Unix). Zu beachten ist hier jedoch unbedingt,<br />

dass zwischen zwei Zahlen mindestens ein Zwischenraumzeichen (<strong>Leer</strong>zeichen, Tab-Zeichen<br />

oder Zeilenendezeichen) gesetzt wird, damit die Zahlen beim Lesen getrennt wahrgenommen<br />

werden.<br />

Das obige Beispiel würde als Textdatei nur ein anderes Überladen des Ausgabeoperators<br />

benötigen. Der für cin überladene Eingabeoperator könnte auch für die Textdatei genommen<br />

werden; jedoch kann ein Extra-Überladen aus Performanzgründen sinnvoll sein (s. Kommentar<br />

im Beispiel). Im folgenden sind die zum Verständnis wichtigsten Teile abgedruckt,<br />

der vollständige Programmtext ist im Internet verfügbar. Die für Dateien überladenen Operatoren<br />

sind hier als Freunde von Datum deklariert, damit sie direkten Zugriff auf die Datenelemente<br />

haben.<br />

// Beispieldatei D12-67.CPP<br />

// (eigentlich wie angedeutet in drei Dateien aufzuteilen)<br />

// ACHTUNG, andere Headerdateien als üblich, Erläuterung s. Skript (11.23d)<br />

#include <br />

#include <br />

// ***** Headerdatei für Klasse Datum *****<br />

class Datum {<br />

// ...<br />

// Überladung des Eingabeoperators für Lesen eines Datums<br />

// aus einer Textdatei<br />

friend ifstream& operator>> (ifstream &ein, Datum &d);<br />

// Überladung des Ausgabeoperators für Schreiben eines Datums<br />

// in eine Textdatei<br />

friend ofstream& operator> (ifstream &ein, Datum &d)<br />

{<br />

// Gültigkeitsprüfung über setzDatum() nicht nötig,<br />

// da gültiges Datum beim Schreiben<br />

ein >> d.tag >> d.monat >> d.jahr;<br />

return ein;<br />

}<br />

ofstream& operator

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!