Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C++-Dateien und -Streams

Bisher haben wir den iostream verwendet Standardbibliothek, die cin bereitstellt und cout Methoden zum Lesen von der Standardeingabe bzw. zum Schreiben in die Standardausgabe.

In diesem Tutorial lernen Sie, wie Sie aus einer Datei lesen und schreiben. Dies erfordert eine weitere Standard-C++-Bibliothek namens fstream , die drei neue Datentypen definiert −

Sr.No Datentyp &Beschreibung
1

offstream

Dieser Datentyp stellt den Ausgabedateistrom dar und wird verwendet, um Dateien zu erstellen und Informationen in Dateien zu schreiben.

2

ifstream

Dieser Datentyp stellt den Eingabedateistrom dar und wird verwendet, um Informationen aus Dateien zu lesen.

3

fstream

Dieser Datentyp stellt den Dateistrom im Allgemeinen dar und hat die Fähigkeiten von sowohl ofstream als auch ifstream, was bedeutet, dass er Dateien erstellen, Informationen in Dateien schreiben und Informationen aus Dateien lesen kann.

Um eine Dateiverarbeitung in C++ durchzuführen, müssen die Header-Dateien und in Ihrer C++-Quelldatei enthalten sein.

Öffnen einer Datei

Eine Datei muss geöffnet werden, bevor Sie sie lesen oder darauf schreiben können. Entweder ofstream oder fstream Objekt kann verwendet werden, um eine Datei zum Schreiben zu öffnen. Und das ifstream-Objekt wird verwendet, um eine Datei nur zum Lesen zu öffnen.

Es folgt die Standard-Syntax für die open()-Funktion, die ein Mitglied von fstream-, ifstream- und ofstream-Objekten ist.

void open(const char *filename, ios::openmode mode);

Hier gibt das erste Argument den Namen und Ort der zu öffnenden Datei und das zweite Argument von open() an Member-Funktion definiert den Modus, in dem die Datei geöffnet werden soll.

Sr.No Modus-Flag &Beschreibung
1

ios::app

Anfügemodus. Alle Ausgaben dieser Datei werden an das Ende angehängt.

2

ios::ate

Öffnen Sie eine Datei für die Ausgabe und verschieben Sie die Lese-/Schreibsteuerung an das Ende der Datei.

3

ios::in

Öffnen Sie eine Datei zum Lesen.

4

ios::out

Öffnen Sie eine Datei zum Schreiben.

5

ios::trunc

Wenn die Datei bereits existiert, wird ihr Inhalt vor dem Öffnen der Datei abgeschnitten.

Sie können zwei oder mehr dieser Werte durch ODER kombinieren ing sie zusammen. Wenn Sie beispielsweise eine Datei im Schreibmodus öffnen und sie abschneiden möchten, falls sie bereits vorhanden ist, folgt die Syntax −

ofstream outfile;
outfile.open("file.dat", ios::out | ios::trunc );

Auf ähnliche Weise können Sie eine Datei zum Lesen und Schreiben wie folgt öffnen:−

fstream  afile;
afile.open("file.dat", ios::out | ios::in );

Schließen einer Datei

Wenn ein C++-Programm beendet wird, leert es automatisch alle Streams, gibt den gesamten zugewiesenen Speicher frei und schließt alle geöffneten Dateien. Aber es ist immer eine gute Praxis, dass ein Programmierer alle geöffneten Dateien schließt, bevor das Programm beendet wird.

Es folgt die Standard-Syntax für die Funktion close(), die ein Mitglied von fstream-, ifstream- und ofstream-Objekten ist.

void close();

In eine Datei schreiben

Bei der C++-Programmierung schreiben Sie Informationen aus Ihrem Programm mithilfe des Stream-Einfügungsoperators (<<) in eine Datei, genauso wie Sie diesen Operator verwenden, um Informationen auf dem Bildschirm auszugeben. Der einzige Unterschied besteht darin, dass Sie einen ofstream verwenden oder fstream Objekt anstelle von cout Objekt.

Aus einer Datei lesen

Sie lesen Informationen aus einer Datei in Ihr Programm, indem Sie den Stream-Extraktionsoperator (>>) verwenden, so wie Sie diesen Operator verwenden, um Informationen über die Tastatur einzugeben. Der einzige Unterschied besteht darin, dass Sie einen ifstream verwenden oder fstream -Objekt anstelle von cin Objekt.

Beispiel zum Lesen und Schreiben

Es folgt das C++-Programm, das eine Datei im Lese- und Schreibmodus öffnet. Nachdem die vom Benutzer eingegebenen Informationen in eine Datei namens afile.dat geschrieben wurden, liest das Programm Informationen aus der Datei und gibt sie auf dem Bildschirm aus −

Live-Demo
#include <fstream>
#include <iostream>
using namespace std;
 
int main () {
   char data[100];

   // open a file in write mode.
   ofstream outfile;
   outfile.open("afile.dat");

   cout << "Writing to the file" << endl;
   cout << "Enter your name: "; 
   cin.getline(data, 100);

   // write inputted data into the file.
   outfile << data << endl;

   cout << "Enter your age: "; 
   cin >> data;
   cin.ignore();
   
   // again write inputted data into the file.
   outfile << data << endl;

   // close the opened file.
   outfile.close();

   // open a file in read mode.
   ifstream infile; 
   infile.open("afile.dat"); 
 
   cout << "Reading from the file" << endl; 
   infile >> data; 

   // write the data at the screen.
   cout << data << endl;
   
   // again read the data from the file and display it.
   infile >> data; 
   cout << data << endl; 

   // close the opened file.
   infile.close();

   return 0;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er die folgende Beispieleingabe und -ausgabe −

$./a.out
Writing to the file
Enter your name: Zara
Enter your age: 9
Reading from the file
Zara
9

Obige Beispiele verwenden zusätzliche Funktionen des cin-Objekts, wie die Funktion getline(), um die Zeile von außen zu lesen, und die Funktion ignore(), um die zusätzlichen Zeichen zu ignorieren, die durch die vorherige Leseanweisung hinterlassen wurden.

Dateipositionszeiger

Beide istream und ostream Stellen Sie Memberfunktionen zum Neupositionieren des Dateipositionszeigers bereit. Diese Elementfunktionen sind seekg ("seek get") für istream und seekp ("seek put") für ostream.

Das Argument für seekg und seekp ist normalerweise eine lange Ganzzahl. Ein zweites Argument kann angegeben werden, um die Suchrichtung anzugeben. Die Suchrichtung kann ios::beg sein (Standardeinstellung) für die Positionierung relativ zum Anfang eines Streams, ios::cur für die Positionierung relativ zur aktuellen Position in einem Stream oder ios::end für die Positionierung relativ zum Ende eines Streams.

Der Dateipositionszeiger ist ein ganzzahliger Wert, der die Position in der Datei als eine Anzahl von Bytes von der Startposition der Datei angibt. Einige Beispiele für die Positionierung des "get"-Dateipositionszeigers sind −

// position to the nth byte of fileObject (assumes ios::beg)
fileObject.seekg( n );

// position n bytes forward in fileObject
fileObject.seekg( n, ios::cur );

// position n bytes back from end of fileObject
fileObject.seekg( n, ios::end );

// position at end of fileObject
fileObject.seekg( 0, ios::end );

C Sprache

  1. C++-Variablen, Literale und Konstanten
  2. C++-Klassen und -Objekte
  3. C++ Friend-Funktion und Friend-Klassen
  4. C Dateiverwaltung
  5. Python-Verzeichnis- und Dateiverwaltung
  6. Strukturen und Klassen in C++
  7. C - Header-Dateien
  8. C++ Datum und Uhrzeit
  9. C++-Überladung (Operator und Funktion)
  10. Was ist eine Mill-Datei?