Samstag, 16. März 2013

Datei Input / Output in C++: Teil II - Datei-Input

Um Informationen aus Dateien lesen zu können, wird wieder der Header fstream benötigt. In diesem wird die Klasse ifstream definiert. Von dieser kann man eine Variable mit beliebigem Namen erstellen. Meist wird die Variable jedoch fin (für file-input) genannt, um die Nähe zu cin (console-input) kenntlich zu machen.
#include <fstream>
ifstream fin;
Nun muss man seine Variable noch mit einer Datei verknüpfen, dies kann durch die Funktion open() realisiert werden.
fin.open("file.txt");
Da es jedoch zu Fehlern kommen kann, wenn man eine Datei öffnet, die nicht existiert, sollte man nach dem Öffnen der Datei prüfen, ob die Datei auch wirklich geöffnet wurde. Für diesen Zweck wird die Funktion is_open() bereitgestellt.
fin.open("file.txt");
if (!fin.is_open())
{
    exit(EXIT_FAILURE);
}
Die Funktion exit() ist sehr nützlich um ein Programm schnell zu beenden, sie wird in der Header-Datei cstdlib bereitgestellt.
Es gibt verschiedene Wege um Informationen aus einer Datei zu lesen, den >> Operator, die Funktion get(), sowie die Funktion getline(). Möchte man z.B. einer Integer Variablen einen Wert aus der Datei zuweisen, so kann man dies mit >> realisieren.
int i=0;
fin >> i;
Dies geht natürlich nur, wenn in der Datei auch an erster Stelle ein Integer-Wert steht. Handelt es sich bei der Datei um eine Textdatei, so kann man mit get() einzelne Zeichen und mit getline() ganze Zeilen lesen.
char ch;
char line[50];
fin.get(ch);
fin.getline(line, 50);
Die Funktion getline() benötigt als Argument ein Array von char Werten. Es liest die Zeile soweit, bis sie entweder endet, oder bis das Array voll ist, d.h. in diesem Beispiel die ersten 50 Zeichen.
Wenn man alle Informationen aus der Datei gelesen hat, sollte man diese mit der Funktion close() abschließen.
fin.close();
Hier könnt ihr euch einen Beispielcode ansehen oder herunterladen.

1 Kommentar:

  1. Sehr gut beschrieben
    gefällt mir
    Muss mich dringend auch wieder mit c befassen

    AntwortenLöschen