Vorlesungsskript - Hochschule Emden/Leer
Vorlesungsskript - Hochschule Emden/Leer
Vorlesungsskript - Hochschule Emden/Leer
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