C++:
Textdatei einlesen

How to:

Ein einfaches Beispiel, um eine Textdatei Zeile für Zeile zu lesen:

#include <iostream>
#include <fstream>
#include <string>

int main() {
    std::ifstream file("Beispiel.txt");
    std::string line;
    
    if (file.is_open()) {
        while (std::getline(file, line)) {
            std::cout << line << '\n';
        }
        file.close();
    } else {
        std::cout << "Datei konnte nicht geöffnet werden." << std::endl;
    }

    return 0;
}

Angenommen, Beispiel.txt enthält:

Hallo Welt!
Das ist eine Textdatei.
Auf Wiedersehen!

Die Ausgabe wäre:

Hallo Welt!
Das ist eine Textdatei.
Auf Wiedersehen!

Deep Dive:

Das Lesen von Textdateien ist grundlegend und relevant, seitdem Dateisysteme existieren. Historisch bedienten sich frühe C++-Programmierer oft der C-Standardbibliothek (<stdio.h>) mit fopen, fgets und fclose. Mit der Einführung der C++-Standardbibliothek bot sich der std::ifstream als bequemere, objektorientierte Möglichkeit an.

Alternativen zum Datei-Lesen in C++ können sein: mmap (Mapping der Datei ins Speicher), die Nutzung von Bibliotheken wie Boost.IOStreams oder moderne C++17-Dateisystem-Libraries (<filesystem>).

Wichtig bei der Implementierung ist das korrekte Handling von Fehlern, wie zum Beispiel die Datei existiert nicht, und Ressourcen, insbesondere das Schließen von Datei-Handles (file.close()). Moderne C++ Praktiken nutzen RAII (Resource Acquisition Is Initialization), also Klassen die Ressourcen in Konstruktoren erwerben und im Destruktor freigeben, um sicherzustellen, dass die Dateien korrekt geschlossen werden.

See Also: