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
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('.') |