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:
- C++-Referenz für
<fstream>
: https://en.cppreference.com/w/cpp/io/basic_fstream - Ein Tutorial zur modernen C++-Dateiverwaltung: https://www.learncpp.com/cpp-tutorial/186-basic-file-io/
- Offizielle Dokumentation zum
<filesystem>
-Modul: https://en.cppreference.com/w/cpp/filesystem