Dateistream-Operationen für Textdateien
Datenfluss
In C++ werden Dateioperationen über die Unterklasse fstream (Dateistream) von stream implementiert. Wenn Sie Dateien auf diese Weise bedienen möchten, müssen Sie daher eine Header-Datei hinzufügen<fstream>
, der Code lautet wie folgt:
#include <fstream>
fstream bietet drei Klassen zum Implementieren von C++-Dateioperationen:
- ofstream: Dateiklasse für Schreiboperationen (Ausgabe) (abgeleitet von ostream)
- ifstream: Dateiklasse für Leseoperationen (Eingabe) (abgeleitet von istream)
- fstream: eine Dateiklasse, die gleichzeitig gelesen und geschrieben werden kann (abgeleitet von iostream)
Die Verwendung von Dateiströmen zum Bearbeiten von Dateien kann in drei Schritte unterteilt werden: Öffnen Sie die Datei, Lesen und schreiben Sie die Datei , Schließen Sie die Datei.
öffne einen Ordner
Um eine Datei zum Lesen zu öffnen, können Sie die Klassenfunktionen fstream oder ifstream verwenden.
- ifstream-Funktion
ifstream inFile("test.txt", ios::in);
- inFile ist ein Objekt des deklarierten ifstream (es kann auch als Variable bezeichnet werden, aber diese Variable enthält mehr Dinge, ähnlich wie Strukturvariablen). Wenn das Objekt deklariert wird, wird eine spezielle Funktion (Konstruktor, lernen Sie den objektorientierten Teil) verwendet automatisch ausgeführt werden. Sie werden es mit der Zeit verstehen);
test.txt
und ios::in sind die an die Funktion übergebenen Parameter.test.txt
ist der Pfad und Dateiname, der geöffnet werden soll, ios::in ist die Methode zum Öffnen der Datei, was bedeutet, dass die Datei zur Eingabe geöffnet wird;- Durch Ausführen dieser Funktion wird die Datei im aktuellen Verzeichnis zum Lesen geöffnet
test.txt
. Anschließend können Sie die Datei bearbeitentest.txt
, indem Sie einige Funktionen über inFile aufrufen.
- fstream-Funktion
Da die fstream-Klasse auch Dateien zur Eingabe öffnen kann, kann die obige Anweisung auch so geschrieben werden:
fstream inFile("test.txt", ios::in);
Die Dateiöffnungsmethoden der Klasse fstream sind:
Öffnen mit | beschreiben |
---|---|
ios::in | Öffnen Sie eine Datei zum Lesen |
ios::out | Öffnen Sie eine Datei zum Schreiben |
ios::app | Alle geschriebenen Daten werden an das Ende der Datei angehängt. Diese Methode erfordert die Verwendung von ios::out |
ios::ate | Die geschriebenen Daten werden an das Ende der Datei angehängt, können aber auch an andere Stellen geschrieben werden. Für diese Methode ist ios::out nicht erforderlich |
ios::trunk | Aktuellen Dateiinhalt verwerfen |
ios::nocreate | Wenn die zu öffnende Datei nicht existiert, funktioniert der Aufruf der Öffnungsfunktion mit diesem Parameter nicht. |
ios::noreplace | Wenn die zu öffnende Datei bereits vorhanden ist, wird beim Versuch, sie mit der Funktion „Öffnen“ zu öffnen, ein Fehler zurückgegeben |
ios::binary | Öffnen Sie eine Datei im Binärformat |
Die zum Lesen von -Dateien geeignete Öffnungsmethode kann auch für die ifstream-Klasse verwendet werden, die für -Dateien geeignet ist Die Eröffnungsmethode des Schreibens kann auch für ofstream verwendet werden, und ios::binary kann für beide verwendet werden.
Dateien lesen und schreiben
- Dateien lesen
Wenn Sie die Datei im Textmodus bedienen (kein Attribut ios::binary), ist die Syntax zum Lesen der Datei der Syntax für die cin-Eingabe über die Tastatur sehr ähnlich. Die folgende Anweisung kann beispielsweise eine Ganzzahl und eine Gleitkommazahl aus der Datei lesentest.txt
.
int n;
float f;
inFile >> n >> f;
- Datei schreiben
Auch die Syntax zum Schreiben von Dateien ist der Ausgabe auf dem Bildschirm sehr ähnlich.
Das folgende Programm schreibt beispielsweise die Ganzzahl 100 und die Gleitkommazahl 3,14 in eine Dateia.txt
.
// 声明对象ofile,以读的方式打开文件a.txt
ofstream ofile("a.txt", ios::out);
// 将100、空格、3.14、换行符写入文件a.txt
ofile << 100 << " " << 3.14 << endl;
// 关闭文件
ofile.close();
Datei schließen
Datei schließen Unabhängig davon, ob es sich um ein ifstream-, ofstream- oder fstream-Objekt handelt, können Sie zum Schließen der Datei dieselbe Syntax verwenden, nämlichxx.close();
.