Dateien in C++: Vom Anfänger zum Profi in 20 Minuten

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Dateien in C++: Vom Anfänger zum Profi in 20 Minuten

\n\n

Stell dir vor, dein Programm ist ein hervorragender Koch. Es kann kochen, aber alle Zutaten müssen von Hand gebracht werden und die Rezepte verschwinden nach jeder Verwendung. Klingt nicht gut, oder? Genau deshalb sollte jeder selbstbewusste Entwickler mit Dateien und dem Dateisystem umgehen können. In C++ ist das nicht nur „möglich“ – es ist die Grundlage, ohne die du dich als Programmierer unsicher fühlen wirst.

\n\n

Heute werden wir die Arbeit mit Dateien in C++ so durchgehen, dass du nicht einfach den Code kopierst, sondern wirklich verstehst, was unter der Haube passiert. Ohne langweilige Vorlesungen, mit lebendigen Beispielen und praktischen Tipps. Los geht's!

\n\n

Ströme – die Grundlage der Dateiarbeit in C++

\n\n

In C++ basiert die Arbeit mit Dateien auf Strömen. Wenn du bereits cout und cin kennst, hast du schon die halbe Miete. Dateiströme funktionieren nach dem gleichen Prinzip, nur dass die Daten statt an den Bildschirm oder die Tastatur in eine Datei gesendet oder daraus geladen werden.

\n\n

Die Hauptakteure auf dem Spielfeld:

\n\n
    \n
  • ifstream – zum Lesen aus einer Datei (Input File Stream).
  • \n
  • ofstream – zum Schreiben in eine Datei (Output File Stream).
  • \n
  • fstream – universeller Strom zum Lesen und Schreiben.
  • \n
\n\n

Alle diese Klassen befinden sich in der Header-Datei <fstream>. Vergiss nicht, sie einzubinden, sonst wird der Compiler böse auf dich.

\n\n

Wie man eine Datei öffnet, ohne verrückt zu werden

\n\n

Das Öffnen einer Datei in C++ ist wie das Öffnen einer Tür: Man muss wissen, wohin man geht und warum. Schauen wir uns ein einfaches Beispiel zum Öffnen einer Datei zum Schreiben an:

\n\n
#include <iostream>\n#include <fstream>\n#include <string>\n\nint main() {\n    std::ofstream outFile("example.txt"); // Datei zum Schreiben öffnen\n    \n    if (outFile.is_open()) {\n        outFile << "Hallo, Datei!" << std::endl;\n        outFile << "Das ist die zweite Zeile." << std::endl;\n        outFile.close(); // Datei schließen\n        std::cout << "Schreiben erfolgreich!" << std::endl;\n    } else {\n        std::cerr << "Datei konnte nicht geöffnet werden!" << std::endl;\n    }\n    \n    return 0;\n}\n
\n\n

Beachte: Wir überprüfen immer mit is_open(), ob die Datei geöffnet wurde. Wenn die Datei nicht existiert, erstellt ofstream sie automatisch. Und wenn es nicht klappt (z. B. keine Schreibrechte), stürzt das Programm nicht ab, sondern meldet einen Fehler.

\n\n

Öffnungsmodi: Wenn einer nicht reicht

\n\n

Standardmäßig überschreibt ofstream die Datei, und ifstream liest nur. Aber was, wenn du Daten an das Ende einer Datei anhängen möchtest? Oder eine Datei gleichzeitig zum Lesen und Schreiben öffnen? Hier kommen die Modus-Flags zur Hilfe:

\n\n
    \n
  • std::ios::in – zum Lesen öffnen.
  • \n
  • std::ios::out – zum Schreiben öffnen (Standard für ofstream).
  • \n
  • std::ios::app – an das Ende der Datei anhängen (append).
  • \n
  • std::ios::ate – den Cursor beim Öffnen an das Ende setzen.
  • \n
  • std::ios::binary – im Binärmodus öffnen.
  • \n
\n\n

Beispiel zur Verwendung der Modi:

\n\n
std::ofstream logFile("log.txt", std::ios::app); // An das Ende anhängen\nif (logFile.is_open()) {\n    logFile << "Neuer Logeintrag" << std::endl;\n    logFile.close();\n}\n
\n\n

Und wenn du sowohl lesen als auch schreiben musst, verwende fstream mit kombinierten Flags:

\n\n
std::fstream file("data.txt", std::ios::in | std::ios::out);\n
\n\n

Aus einer Datei lesen: Wort für Wort und Zeile für Zeile

\n\n

Das Lesen aus einer Datei in C++ ist eine eigene Kunst. Man kann Wort für Wort, Zeile für Zeile oder Zeichen für Zeichen lesen. Die Wahl hängt von der Aufgabe ab.

\n\n

Zeilenweises Lesen (die beliebteste Methode)

\n\n
#include <fstream>\n#include <iostream>\n#include <string>\n\nint main() {\n    std::                

Blogs

Buchempfehlungen