So lesen und schreiben Sie eine Datei in C++

How Read Write File C

In diesem Artikel zeigen wir Ihnen anhand mehrerer Beispiele, wie Sie eine Datei in der Programmiersprache C++ lesen und schreiben. Um C++-Dateioperationen wie Lesen und Schreiben zu verstehen, müssen wir zuerst das Konzept eines Streams in C++ verstehen.

Was ist ein Stream?

Ein Stream ist einfach ein Fluss von Daten oder Zeichen. Es gibt zwei Arten von Streams: Eingabestreams und Ausgabestreams. Ein Eingabestrom wird verwendet, um die Daten von einem externen Eingabegerät wie beispielsweise einer Tastatur zu lesen, während ein Ausgabestrom verwendet wird, um Daten auf das externe Ausgabegerät wie beispielsweise einen Monitor zu schreiben. Eine Datei kann sowohl als Eingabe- als auch als Ausgabequelle betrachtet werden.





In C++ verwenden wir einen Stream, um Daten an oder von einer externen Quelle zu senden oder zu empfangen.



Wir können eingebaute Klassen verwenden, um auf einen Eingabe-/Ausgabestrom zuzugreifen, d. h. ios.

Hier ist die Stream-Klassenhierarchie der Programmiersprache C++:



Die Objekte cin und cout werden verwendet, um die Daten von der Tastatur zu lesen bzw. die Ausgabe auf dem Monitor anzuzeigen. Darüber hinaus wird ifstream, das für Eingabedateistrom steht, verwendet, um einen Datenstrom aus einer Datei zu lesen, und ofstream, das für Ausgabedateistrom steht, wird verwendet, um einen Datenstrom in eine Datei zu schreiben.

Die Datei iostram.h enthält alle erforderlichen Standard-Ein-/Ausgabe-Stream-Klassen in der Programmiersprache C++.

Beispiele

Nachdem Sie nun die Grundlagen von Streams verstanden haben, besprechen wir die folgenden Beispiele, die Ihnen helfen, Dateioperationen in C++ besser zu verstehen:

  • Beispiel 1: Öffnen und Schließen einer Datei
  • Beispiel 2: In eine Datei schreiben
  • Beispiel 3: Aus einer Datei lesen
  • Beispiel 4: Lesen und Schreiben in eine Datei
  • Beispiel 5: Lesen und Schreiben in eine Binärdatei

Beispiel 1: Öffnen und Schließen einer Datei

In diesem Beispielprogramm zeigen wir, wie man eine Datei öffnet/erstellt und wie man die Datei in C++ schließt. Wie Sie im folgenden Programm sehen können, haben wir die für Dateioperationen erforderliche Bibliothek hinzugefügt.

Um eine Datei zu öffnen und zu schließen, benötigen wir ein Objekt von ofstream. Um dann eine Datei zu lesen oder zu schreiben, müssen wir die Datei öffnen. Wir haben die fstream-Header-Datei in Zeile 1 eingefügt, damit wir auf die ofstream-Klasse zugreifen können.

Wir haben einen myFile_Handler als Objekt von ofstream innerhalb der Hauptfunktion deklariert. Wir können dann die Funktion open() verwenden, um eine leere Datei zu erstellen, und die Funktion close(), um die Datei zu schließen.

#enthalten

mit Namensraumstd;

inthauptsächlich()
{
ofstream myFile_Handler;

// Datei öffnen
myFile_Handler.offen('Datei_1.txt');

// Datei schließen
myFile_Handler.nah dran();
Rückkehr 0;
}

Nun kompilieren wir das Programm und untersuchen die Ausgabe. Wie Sie im Ausgabefenster unten sehen können, wurde die Datei File_1.txt nach dem Ausführen des Programms erstellt. Die Dateigröße ist null, da wir keinen Inhalt in die Datei geschrieben haben.

Beispiel 2: In eine Datei schreiben

Im vorherigen Beispielprogramm haben wir Ihnen gezeigt, wie Sie eine Datei öffnen und wie Sie die Datei schließen. Jetzt zeigen wir Ihnen, wie Sie etwas in eine Datei schreiben.

Wir können mit dem Stream-Einfügungsoperator in eine Datei schreiben, d. h.<<. In this program, we have used the file handler and insertion operator to write two lines in the file. The insertion operator (<<) indicates that we are inserting the string into the output file stream object.

#enthalten

mit Namensraumstd;

inthauptsächlich()
{
ofstream myFile_Handler;
// Datei öffnen
myFile_Handler.offen('Datei_1.txt');

// In die Datei schreiben
myFile_Handler<< 'Dies ist eine Beispiel-Testdatei. ' <<endl;
myFile_Handler<< 'Dies ist die zweite Zeile der Datei. ' <<endl;

// Datei schließen
myFile_Handler.nah dran();
Rückkehr 0;
}

Nun kompilieren wir das obige Programm und führen es aus. Wie Sie unten sehen können, haben wir erfolgreich in die Datei File_1.txt geschrieben.

Beispiel 3: Aus einer Datei lesen

In den vorherigen Beispielen haben wir Ihnen gezeigt, wie Sie Inhalte in eine Datei schreiben. Lassen Sie uns nun den Inhalt aus der Datei lesen, die wir in Beispiel 2 erstellt haben, und den Inhalt auf dem Standardausgabegerät, d. h. dem Monitor, anzeigen.

Wir verwenden die Funktion getline(), um die komplette Zeile aus der Datei zu lesen und dann die Zeile auf dem Monitor auszugeben.

#enthalten
#enthalten
#enthalten

mit Namensraumstd;

inthauptsächlich()
{
ifstream myFile_Handler;
string myLine;

// Datei im Lesemodus öffnen
myFile_Handler.offen('Datei_1.txt');

wenn(myFile_Handler.ist offen())
{
// Lesen Sie die Datei weiter
während(Getline(myFile_Handler, myLine))
{
// drucke die Zeile auf der Standardausgabe
Kosten <<meine Linie<<endl;
}
// Datei schließen
myFile_Handler.nah dran();
}
anders
{
Kosten << 'Datei kann nicht geöffnet werden!';
}
Rückkehr 0;
}

Jetzt drucken wir den Inhalt von File_1.txt mit dem folgenden Befehl: cat File_1.txt. Sobald wir das Programm kompiliert und ausgeführt haben, ist klar, dass die Ausgabe mit dem Inhalt der Datei übereinstimmt. Daher haben wir die Datei erfolgreich gelesen und den Inhalt der Datei auf den Monitor gedruckt.

Beispiel 4: Lesen und Schreiben in eine Datei

Bisher haben wir Ihnen gezeigt, wie Sie eine Datei öffnen, lesen, schreiben und schließen. In C++ können wir auch gleichzeitig in eine Datei lesen und schreiben. Um eine Datei sowohl zu lesen als auch in eine Datei zu schreiben, müssen wir ein fstream-Objekt abrufen und die Datei im ios::in- und ios::out-Modus öffnen.

In diesem Beispiel schreiben wir zunächst etwas Inhalt in die Datei. Dann lesen wir die Daten aus der Datei und drucken sie auf dem Monitor aus.

#enthalten
#enthalten
#enthalten

mit Namensraumstd;

inthauptsächlich()
{
fstream myFile_Handler;
string myLine;

// Datei öffnen
myFile_Handler.offen('Datei_1.txt', ios::in |ios::aus);

// Überprüfen Sie, ob die Datei geöffnet wurde
wenn(!myFile_Handler)
{
Kosten << 'Datei wurde nicht geöffnet!';
Ausfahrt(1);
}

// In die Datei schreiben
myFile_Handler<< '1. Dies ist eine weitere Beispiel-Testdatei. ' <<endl;
myFile_Handler<< '2. Dies ist die zweite Zeile der Datei. ' <<endl;

myFile_Handler.suche(ios::bitten);

// Datei lesen
wenn(myFile_Handler.ist offen())
{
// Lesen Sie die Datei weiter
während(Getline(myFile_Handler, myLine))
{
// drucke die Zeile auf der Standardausgabe
Kosten <<meine Linie<<endl;
}

// Datei schließen
myFile_Handler.nah dran();
}
anders
{
Kosten << 'Datei kann nicht geöffnet werden!';
}
myFile_Handler.nah dran();
Rückkehr 0;
}

Nun werden wir das Programm kompilieren und ausführen.

Beispiel 5: Lesen und Schreiben in eine Binärdatei

In diesem Beispiel werden wir eine Klasse deklarieren und dann das Objekt in eine Binärdatei schreiben. Um dieses Beispiel zu vereinfachen, haben wir die Employee-Klasse mit einer öffentlichen Variable emp_id deklariert. Dann lesen wir die Binärdatei und drucken die Ausgabe auf dem Monitor.

#enthalten
#enthalten

mit Namensraumstd;

KlasseAngestellter
{
öffentlich:
intemp_id;
};

inthauptsächlich()
{
ofstream binOutFile_Handler;
ifstream binInFile_Handler;

Mitarbeiter empObj_W, empObj_R;

// Datei öffnen
binOutFile_Handler.offen('mitarbeiter.dat', ios::aus |ios::binär);

// Überprüfen Sie, ob die Datei geöffnet wurde
wenn(!binOutFile_Handler)
{
Kosten << 'Datei wurde nicht geöffnet!';
Ausfahrt(1);
}

// initialisiere empObj_W
empObj_W.emp_id = 1512;

// In die Datei schreiben
binOutFile_Handler.schreiben((verkohlen *) &empObj_W,Größe von(Angestellter));
binOutFile_Handler.nah dran();

wenn(!binOutFile_Handler.gut())
{
Kosten << 'Beim Schreiben der Binärdatei ist ein Fehler aufgetreten!' <<endl;
Ausfahrt(2);
}

// Jetzt lesen wir die Datei employee.dat
binInFile_Handler.offen('mitarbeiter.dat', ios::in |ios::binär);
// Überprüfen Sie, ob die Datei geöffnet wurde
wenn(!binInFile_Handler)
{
Kosten << 'Datei wurde nicht geöffnet!';
Ausfahrt(3);
}

// Inhalt der Binärdatei lesen
binInFile_Handler.lesen((verkohlen *) &empObj_R,Größe von(Angestellter));
binInFile_Handler.nah dran();

wenn(!binInFile_Handler.gut())
{
Kosten << 'Beim Lesen der Binärdatei ist ein Fehler aufgetreten!' <<endl;
Ausfahrt(4);
}

// Ausgabe von empObj_R . ausgeben
Kosten << 'Angaben zum Mitarbeiter: ' <<endl;
Kosten << 'Angestellten ID : ' <<empObj_R.emp_id <<endl;

Rückkehr 0;
}

Abschluss

Dateien werden hauptsächlich zum Speichern der Daten verwendet und spielen eine wichtige Rolle in der realen Programmierung. In diesem Artikel haben wir Ihnen anhand einiger Beispiele gezeigt, wie Sie verschiedene Dateioperationen mit der Programmiersprache C++ verwenden. Darüber hinaus haben wir Ihnen gezeigt, wie Sie Daten sowohl in Textdateien als auch in Binärdateien lesen und schreiben.