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

C++ Datei-I/O: Lesen & Schreiben mit fstream

Bislang: iostream mit cin/cout für Standard-I/O. Nun: Datei-Lesen/Schreiben mit fstream – definiert drei Datentypen:

Nr.Datentyp & Beschreibung
1ofstream – Output File Stream: Dateien erstellen & schreiben
2ifstream – Input File Stream: Dateien lesen
3fstream – Allgemeiner File Stream: beide Fähigkeiten (erstellen, schreiben, lesen)

Header: <iostream> und <fstream> einbinden.

Datei öffnen

Vor Lesen/Schreiben öffnen. ofstream/fstream für Schreiben, ifstream für Lesen.

Syntax open() (Member von fstream/ifstream/ofstream):

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

filename: Name/Pfad. mode: Öffnungsmodus.

Nr.Modus-Flag & Beschreibung
1ios::app – Append: Ausgabe ans Dateiende
2ios::ate – Open für Output, Position ans Ende
3ios::in – Zum Lesen öffnen
4ios::out – Zum Schreiben öffnen
5ios::trunc – Existierende Datei leeren vor Öffnen

Flags per | (OR) kombinierbar. Beispiel Schreiben + Truncieren:

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

Lesen & Schreiben:

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

Datei schließen

Programmende: automatisches Flush/Close. Gute Praxis: explizit close() vor Beendigung.

void close();

In Datei schreiben

Stream-Insertion-Operator << wie bei cout, aber mit ofstream/fstream-Objekt.

Aus Datei lesen

Stream-Extraction-Operator >> wie bei cin, aber mit ifstream/fstream-Objekt.

Komplettbeispiel: Schreiben & Lesen

#include <fstream>
#include <iostream>
using namespace std;
int main() {
    char data[100];
    ofstream outfile;
    outfile.open("afile.dat");
    cout << "Writing to the file" << endl;
    cout << "Enter your name: ";
    cin.getline(data, 100);
    outfile << data << endl;
    cout << "Enter your age: ";
    cin >> data;
    cin.ignore();
    outfile << data << endl;
    outfile.close();

    ifstream infile;
    infile.open("afile.dat");
    cout << "Reading from the file" << endl;
    infile >> data;
    cout << data << endl;
    infile >> data;
    cout << data << endl;
    infile.close();
    return 0;
}

Beispiel-I/O:

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

Zusatz: cin.getline() (Zeile lesen), cin.ignore() (Restzeichen verwerfen).

Datei-Positionspointer

istream/ostream bieten Repositionierung:

Argument: long Integer. Optionaler 2. Parameter: Seek-Richtung:

Position = Byte-Offset vom Dateianfang. Beispiele:

fileObject.seekg(n);           // n-tes Byte (ios::beg)
fileObject.seekg(n, ios::cur); // n Bytes vorwärts
fileObject.seekg(n, ios::end); // n Bytes vom Ende
fileObject.seekg(0, ios::end); // ans Ende

C Sprache

  1. C++-Variablen, Literale und Konstanten meistern: Ein umfassender Leitfaden
  2. C++ Klassen & Objekte: Praktischer Leitfaden zur objektorientierten Programmierung
  3. C++ Friend-Funktionen und Friend-Klassen: Zugriffskontrolle meistern
  4. C-Dateiverwaltung: I/O mit fopen, fprintf, fread & fseek meistern
  5. Verzeichnis- und Dateioperationen in Python meistern
  6. C++ Structures vs. Classes: Praktischer Leitfaden für Embedded-Entwickler
  7. C-Header-Dateien verstehen: Typen, Verwendung und Best Practices
  8. C++ Datum & Zeit: Umfassender Leitfaden
  9. C++ Overloading: Funktionen & Operatoren erklärt
  10. Feile (Schruppfeile) erklärt: Das unverzichtbare Werkzeug für Holz- und Metallbearbeitung