Lektion 81:DateienDas Lesen und Beschreiben von Dateien ist wirklich einfach. Dazu gibt es die Klassen ifstream (für Eingabe) und ofstream (für Ausgabe). Der Konstruktor bekommt als Argument den Dateinamen. Ansonsten werden diese Objekte dieser Klassen verwendet wie cin und cout. Normalerweise nenne ich die Variablen, die die Datei-Objekte beinhalten nur in oder out. Das folgende Programm schreibt einen Bäckerwitz in die Datei "witz.txt":
Zum Einlesen wird ein entsprechendes Objekt der Klasse ifstream verwendet. Um nicht darauf achten zu müssen, wie viele Zeichen ausgegeben werden sollen, gibt es die Methode eof() (end of file), die angibt, ob die Datei vollständig eingelesen wurde. Eingelesen werden kann der Witz wieder mit folgendem Programm:
Oh! Die Ausgabe, die entsteht ist fast lustiger, als der Witz. Alle Leerzeichen und Zeilenumbrüche sind verschwunden. Das liegt am operator<<. Er verwirft einfach alle Leerzeichen und Zeilenumbrüche. Das läßt sich mit der get-Methode umgehen. Sie liest einfach das nächst Zeichen ein, auch wenn es ein Leerzeichen oder ein Zeilenumbruch ist.
ÜbungDas Programm hat ein Zeichen zu viel ausgegeben. Das liegt daran, daß das Ende der Datei noch nicht erkannt wird, wenn das letzte gültige Zeichen gelesen wurde, sondern erst, wenn über das Dateiende hinaus gelesen wurde. Dieses eine zuviel gelesene Zeichen soll nicht ausgegeben werden. Korrigieren Sie das Programm. Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern. [aktuelle Version] [inhalt] [index] [Fehlerkorrektur, Verbesserungsvorschlag] © Volkard Henkel <volkard@normannia.de>, last update: 08/25/00 |