C++ Dateiverwaltung: Öffnen, Schreiben, Lesen und Schließen von Dateien in C++

Was ist die Dateiverwaltung in C++?

Dateien speichern Daten dauerhaft auf einem Speichergerät. Mit der Dateiverwaltung kann die Ausgabe eines Programms in einer Datei gespeichert werden. In der Datei können verschiedene Vorgänge an den Daten ausgeführt werden.

Ein Stream ist eine Abstraktion eines Geräts, auf dem Eingabe-/Ausgabevorgänge ausgeführt werden. Sie können einen Stream entweder als Ziel oder als Quelle von Zeichen unbestimmter Länge darstellen. Dies wird durch ihre Verwendung bestimmt. C++ stellt Ihnen eine Bibliothek mit Methoden zur Dateiverwaltung zur Verfügung. Lassen Sie uns darüber sprechen.

Die fstream-Bibliothek

Die fstream-Bibliothek bietet C++ Programmierern stehen drei Klassen für die Arbeit mit Dateien zur Verfügung. Diese Klassen umfassen:

  • ofstream– Diese Klasse repräsentiert einen Ausgabestream. Es wird zum Erstellen von Dateien und zum Schreiben von Informationen in Dateien verwendet.
  • ifstream– Diese Klasse repräsentiert einen Eingabestream. Es wird zum Lesen von Informationen aus Datendateien verwendet.
  • fstream– Diese Klasse repräsentiert im Allgemeinen einen Dateistream. Es verfügt über Ofstream/Ifstream-Funktionen. Das bedeutet, dass es in der Lage ist, Dateien zu erstellen, in Dateien zu schreiben und aus Datendateien zu lesen.

Das folgende Bild macht es einfach zu verstehen:

fstream Bibliothek
fstream Bibliothek

Um die oben genannten Klassen der fstream-Bibliothek verwenden zu können, müssen Sie sie als Header-Datei in Ihr Programm einbinden. Natürlich verwenden Sie die Präprozessoranweisung #include. Sie müssen auch die iostream-Headerdatei einbinden.

So öffnen Sie Dateien

Bevor Sie eine Operation an einer Datei durchführen, müssen Sie diese zuerst öffnen. Wenn Sie in die Datei schreiben müssen, öffnen Sie sie mit fstream- oder ofstream-Objekten. Wenn Sie nur aus der Datei lesen müssen, öffnen Sie sie mit dem ifstream-Objekt.

In den drei Objekten fstream, ofstream und ifstream ist die Funktion open() definiert. Die Funktion verwendet diese Syntax:

open (file_name, mode);
  • Der Parameter file_name gibt den Namen der zu öffnenden Datei an.
  • Der Modusparameter ist optional. Er kann einen der folgenden Werte annehmen:
Wert Beschreibung
ios:: app Der Anhängemodus. Die an die Datei gesendete Ausgabe wird an diese angehängt.
ios::ate Es öffnet die Datei für die Ausgabe und verschiebt dann die Lese- und Schreibsteuerung an das Ende der Datei.
ios::in Es öffnet die Datei zum Lesen.
ios::out Es öffnet die Datei zum Schreiben.
ios::trunc Wenn eine Datei vorhanden ist, sollten die Dateielemente vor dem Öffnen abgeschnitten werden.

Es ist möglich, zwei Modi gleichzeitig zu verwenden. Sie kombinieren sie mit dem Operator | (ODER).

Beispiel 1:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
	fstream my_file;
	my_file.open("my_file", ios::out);
	if (!my_file) {
		cout << "File not created!";
	}
	else {
		cout << "File created successfully!";
		my_file.close(); 
	}
	return 0;
}

Ausgang:

Öffnen Sie Dateien

Hier ist ein Screenshot des Codes:

Öffnen Sie Dateien

Code-Erklärung:

  1. Fügen Sie die iostream-Header-Datei in das Programm ein, um dessen Funktionen zu nutzen.
  2. Fügen Sie die fstream-Headerdatei in das Programm ein, um dessen Klassen zu verwenden.
  3. Fügen Sie den std-Namespace in unseren Code ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
  4. Rufen Sie die Funktion main() auf. Die Programmlogik sollte in seinem Hauptteil enthalten sein.
  5. Erstellen Sie ein Objekt der fstream-Klasse und geben Sie ihm den Namen my_file.
  6. Wenden Sie die Funktion open() auf das obige Objekt an, um eine neue Datei zu erstellen. Der Out-Modus ermöglicht es uns, in die Datei zu schreiben.
  7. Verwenden Sie die if-Anweisung, um zu überprüfen, ob die Dateierstellung fehlgeschlagen ist.
  8. Auf der Konsole zu druckende Meldung, wenn die Datei nicht erstellt wurde.
  9. Ende des Hauptteils der if-Anweisung.
  10. Verwenden Sie eine else-Anweisung, um anzugeben, was zu tun ist, wenn die Datei erstellt wurde.
  11. Meldung, die auf der Konsole gedruckt werden soll, wenn die Datei erstellt wurde.
  12. Wenden Sie die Funktion close() auf das Objekt an, um die Datei zu schließen.
  13. Ende des Hauptteils der else-Anweisung.
  14. Das Programm muss einen Wert zurückgeben, wenn es erfolgreich abgeschlossen wird.
  15. Ende des main()-Funktionskörpers.

So schließen Sie Dateien

Einmal C++ Programm beendet sich automatisch

  • spült die Bäche
  • Gibt den zugewiesenen Speicher frei
  • schließt geöffnete Dateien.

Als Programmierer sollten Sie jedoch lernen, geöffnete Dateien zu schließen, bevor das Programm beendet wird.

Die Objekte fstream, ofstream und ifstream verfügen über die Funktion close() zum Schließen von Dateien. Die Funktion verwendet diese Syntax:

void close();

So schreiben Sie in Dateien

Sie können direkt von Ihrem C++ Programm. Sie verwenden hierfür den Stream-Einfügungsoperator (<<). Der in die Datei zu schreibende Text sollte in Anführungszeichen gesetzt werden.

Lassen Sie uns dies demonstrieren.

Beispiel 2:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
	fstream my_file;
	my_file.open("my_file.txt", ios::out);
	if (!my_file) {
		cout << "File not created!";
	}
	else {
		cout << "File created successfully!";
		my_file << "Guru99";
		my_file.close();
	}
	return 0;
}

Ausgang:

So schreiben Sie in Dateien

Hier ist ein Screenshot des Codes:

So schreiben Sie in Dateien

Code-Erklärung:

  1. Fügen Sie die iostream-Header-Datei in das Programm ein, um dessen Funktionen zu nutzen.
  2. Fügen Sie die fstream-Headerdatei in das Programm ein, um dessen Klassen zu verwenden.
  3. Fügen Sie den std-Namespace in das Programm ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
  4. Rufen Sie die Funktion main() auf. Die Programmlogik sollte im Hauptteil dieser Funktion hinzugefügt werden.
  5. Erstellen Sie eine Instanz der fstream-Klasse und geben Sie ihr den Namen my_file.
  6. Verwenden Sie die Funktion open(), um eine neue Datei mit dem Namen my_file.txt zu erstellen. Die Datei wird im Ausgabemodus zum Schreiben geöffnet.
  7. Verwenden Sie eine if-Anweisung, um zu überprüfen, ob die Datei nicht geöffnet wurde.
  8. Text, der auf der Konsole gedruckt werden soll, wenn die Datei nicht geöffnet ist.
  9. Ende des Hauptteils der if-Anweisung.
  10. Verwenden Sie eine else-Anweisung, um anzugeben, was zu tun ist, wenn die Datei erstellt wurde.
  11. Text, der auf der Konsole gedruckt werden soll, wenn die Datei erstellt wurde.
  12. Schreiben Sie Text in die erstellte Datei.
  13. Verwenden Sie die Funktion close(), um die Datei zu schließen.
  14. Ende des Hauptteils der else-Anweisung.
  15. Das Programm muss bei erfolgreichem Abschluss einen Wert zurückgeben.
  16. Ende des Hauptteils der main()-Funktion.

So lesen Sie aus Dateien

Sie können Informationen aus Dateien in Ihr C++ Programm. Dies ist mit dem Stream-Extraktionsoperator (>>) möglich. Sie verwenden den Operator auf die gleiche Weise, wie Sie ihn zum Lesen von Benutzereingaben von der Tastatur verwenden. Anstelle des cin-Objekts verwenden Sie jedoch das ifstream/fstream-Objekt.

Beispiel 3:

#include <iostream>
#include <fstream>
using namespace std;
int main() {
	fstream my_file;
	my_file.open("my_file.txt", ios::in);
	if (!my_file) {
		cout << "No such file";
	}
	else {
		char ch;

		while (1) {
			my_file >> ch;
			if (my_file.eof())
				break;

			cout << ch;
		}

	}
	my_file.close();
	return 0;
}

Ausgang:

Aus Dateien lesen

Keine solche Datei

Hier ist ein Screenshot des Codes:

Aus Dateien lesen

Code-Erklärung:

  1. Fügen Sie die iostream-Header-Datei in das Programm ein, um dessen Funktionen zu nutzen.
  2. Fügen Sie die fstream-Headerdatei in das Programm ein, um dessen Klassen zu verwenden.
  3. Fügen Sie den std-Namespace in das Programm ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
  4. Rufen Sie die Funktion main() auf. Die Programmlogik sollte im Hauptteil dieser Funktion hinzugefügt werden.
  5. Erstellen Sie eine Instanz der fstream-Klasse und geben Sie ihr den Namen my_file.
  6. Verwenden Sie die Funktion open(), um eine neue Datei mit dem Namen my_file.txt zu erstellen. Die Datei wird im In-Modus zum Lesen geöffnet.
  7. Verwenden Sie eine if-Anweisung, um zu überprüfen, ob die Datei nicht existiert.
  8. Text, der auf der Konsole gedruckt werden soll, wenn die Datei nicht gefunden wird.
  9. Ende des Hauptteils der if-Anweisung.
  10. Verwenden Sie eine else-Anweisung, um anzugeben, was zu tun ist, wenn die Datei gefunden wird.
  11. Erstellen Sie char-Variable namens ch.
  12. Erstellen Sie while-Schleife zum Durchlaufen des Dateiinhalts.
  13. Inhalt der Datei in die Variable ch schreiben/speichern.
  14. Verwenden Sie eine if-Bedingung und eine eof()-Funktion, also das Ende der Datei, um sicherzustellen, dass der Compiler weiterhin aus der Datei liest, wenn das Ende nicht erreicht ist.
  15. Verwenden Sie eine break-Anweisung, um das Lesen aus der Datei zu stoppen, sobald das Ende erreicht ist.
  16. Drucken Sie den Inhalt der Variablen ch auf der Konsole aus.
  17. Ende des While-Körpers.
  18. Ende des Hauptteils der else-Anweisung.
  19. Rufen Sie die Funktion close() auf, um die Datei zu schließen.
  20. Das Programm muss bei erfolgreichem Abschluss einen Wert zurückgeben.
  21. Ende des Hauptteils der main()-Funktion.

Zusammenfassung

  • Beim Dateihandling kann die Ausgabe eines Programms gesendet und in einer Datei gespeichert werden.
  • Anschließend können auf die Daten in der Datei eine Reihe von Vorgängen angewendet werden.
  • Ein Stream ist eine Abstraktion, die ein Gerät darstellt, auf dem Eingabe-/Ausgabevorgänge ausgeführt werden.
  • Ein Stream kann entweder als Ziel oder als Quelle von Zeichen unbegrenzter Länge dargestellt werden.
  • Die fstream-Bibliothek bietet C++ Programmierer mit Methoden zur Dateiverwaltung.
  • Um die Bibliothek verwenden zu können, müssen Sie sie mit der Präprozessoranweisung #include in Ihr Programm einbinden.