Springe zum Hauptinhalt
Grundlagen der Informatik I & II und Informatik I & II
Dateioperationen
Dateioperationen

Dateioperationen


Was bisher geschah...


Informationen an den Nutzer gesendet und dessen Eingaben erhalten, hat das Programm bisher über die Standardeingabe- bzw. -ausgabemethode. Nach dem Beenden des Programms wurden alle Daten gelöscht. Um Daten in Dateien abzulegen und sie damit dauerhaft zu speichern, nutzen wir Dateioperationen. Umgekehrt können auch Daten aus vorhandenen Dateien in das Programm geladen werden.



Wie funktionierts?

Zum Schreiben in eine Datei benötigen wir zunächst 2 Komponenten:
  • eine Datei
  • einen ausgehenden Datenstrom
Um dies zu erzeugen nutzen wir die Bibliotheksfunktionen der Klasse <fstream>. Folgende Anweisung erzeugt einen Ausgabestrom über die Variable "output" in die Datei "ergebnis.txt":

fstream output ("ergebnis.txt", fstream::out);

Falls die angegebene Datei noch nicht existiert, wird sie automatisch erzeugt. Sie befindet sich dann in dem Ordner, in dem auch das Programm gestartet wurde. Andernfalls gibt es Modi, die das Schreiben der Daten beeinflussen und als weitere Parameter angegeben werden (these flags can be combined with the bitwise OR operator (|)):

member
constant
stands for access
in input File open for reading: the internal stream buffer supports input operations.
out output File open for writing: the internal stream buffer supports output operations.
binary binaty Operations are performed in binary mode rather than text.
ate at end The output position starts at the end of the file.
app append All output operations happen at the end of the file, appending to its existing contents.
trunc truncate Any contents that existed in the file before it is open are discarded.

Wie funktionierts?

Zum Lesen aus einer Datei benötigen wir zunächst einen eingehenden Datenstrom. Um diesen zu erzeugen, nutzen wir die Bibliotheksfunktionen der Klasse <fstream>. Folgende Anweisung erzeugt einen Eingabestrom über die Variable "input" aus der Datei "daten.txt":

fstream input ("daten.txt", fstream::in);

Die Datei mit den Daten muss sich im gleichen Ordner befinden, in dem auch das Programm gestartet wurde. Andernfalls kann der Pfad zur Datei, vor dem Dateinamen eingefügt werden.

Formatierung

member functions description example
flags, setf, unsetf A set of internal flags that affect how certain input/output operations are interpreted or generated. cout.flags( ios::right | ios::hex | ios::showbase );
width Width of the next formatted element to insert. cout.width(10);
precision Decimal precision for the next floating-point value inserted. cout.precision(5);
fill Character to pad a formatted field up to the field width. cout.fill('.')