Bisher haben die Programmbeispiele ohne Bezug zum Dateisystem auf Ihrem Computer gearbeitet. Einige Programme haben Daten gelesen, die Sie über die Tastatur eingegeben haben. Jedes Programm schrieb ein Ergebnis auf den Bildschirm, aber kein Programm speicherte die Daten permanent. Falls Sie die Ausgaben noch einmal sehen wollten, blieb Ihnen nichts anderes übrig, als das Programm erneut zu starten.
Bei einer normalen C++ Anwendung lesen die Programme die Daten von der Festplatte oder einem anderen Speichermedium und speichern diese nach der Bearbeitung dort wieder. Das gilt besonders für Anwendungen wie Textverarbeitung, Tabellenkalkulation oder Datenbanken.
In diesem Kapitel lernen Sie mit C++ Daten in eine Datei zu schreiben und aus einer Datei zu lesen. Beim Datenformat kann es sich um für Menschen lesbare Textdateien oder für Computer lesbare Binärdateien handeln.
Daten in eine Datei schreiben
Die C++ Standard-Bibliothek <fstream> enthält alle Funktionen zum Arbeiten mit Dateien. In ein Programm eingefügt wird die Bibliothek durch das Statement
#include <fstream>
zu Beginn des Programms.
Für jede Datei, die geöffnet wird, muss ein Filestream-Objekt angelegt werden. Das ist entweder ein Ausgabestrom „ofstream-“ oder ein Eingabestrom „ifstream-“ Objekt. Das ofstream-Objekt wird dabei ähnlich wie die Funktion cout verwendet, während ifstream ähnlich wie cin zum Lesen der Eingabe funktioniert.
Die Deklaration des Filestream-Objekts für die Ausgabe beginnt mit dem Schlüsselwort ofstream, danach folgen der Name des Filestreams und der Name der Textdatei in Klammern. Demnach lautet die Syntax:
ofstream objektname („Dateiname“);
Der Dateiname wird als Argument übergeben und kann optional auch den genauen Suchpfad wie zum Beispiel
“C:databeispiel.txt“ oder “/home/user/data/beispiel.txt“
enthalten. Andernfalls wird die Datei im aktuellen Verzeichnis gesucht. Beachten Sie bitte, dass der Pfad- bzw. Dateiname wie ein String in obere Anführungszeichen stehen muss.
Bevor die Daten in eine Datei geschrieben werden, überprüft das Programm, ob das Filestream-Objekt richtig angelegt wurde. Üblicherweise wird dazu ein if-Befehl verwendet. Dabei schreibt das Programm die Daten nur in eine Datei, wenn der Test erfolgreich war. Existiert die angegeben Datei bereits, wird sie standardmäßig ohne Warnung überschrieben. Andernfalls wird die Datei angelegt und die Daten geschrieben.
Nachdem die Daten in die angegebene Datei geschrieben wurden, wird vom Programm die mit dem Filestream-Objekt assoziierte Funktion close() erwartet, um den Ausgabe-Stream zu schließen. Das folgende Programm bildet zuerst einen String bevor dieser in eine Datei geschrieben wird. Nachdem der Schreibvorgang erfolgreich war, wird der Ausgabe-Stream geschlossen.
Übung: Datei schreiben
Programm: schreiben.cpp
#include <fstream> //Filestream-Support #include <string> #include <iostream> using namespace std; int main() { string gedicht = "\n\t Der Worte sind genug gewechselt,"; gedicht.append("\n\t lasst mich auch endlich Taten sehn!"); gedicht.append("\n\t Indes Ihr Komplimente drechselt,"); gedicht.append("\n\t kann etwas Nuetzliches geschen."); gedicht.append("\n\n\t FAUST - Johann Wolfgang von Goethe"); ofstream schreiben ("gedicht.txt"); if (!schreiben ) { cout << "Fehler beim Oeffnen der Datei!" << endl; return -1; //Signal fuer Programm-Exit } schreiben << gedicht << endl; schreiben.close(); return 0; }
Speichern Sie das Programm und schauen Sie sich nach dem Kompilieren das Ergebnis an.
Dieser Artikel ist Teil unseres kostenlosen Workshops “C++ Programmieren lernen” – Geeignet für Einsteiger und Fortgeschrittene. Machen auch Sie mit und lernen Sie in 50 Artikeln, wie Sie Programme selbst schreiben!
Artikelbild: Fotolia / bramgino