Arbeiten mit dem Dateisystem in C++: Vollständiger Leitfaden für Anfänger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit dem Dateisystem in C++: Von den Grundlagen bis zu fortgeschrittenen Techniken



Die Arbeit mit dem Dateisystem ist eine der wichtigsten Aufgaben in jeder ernsthaften C++-Anwendung. Ob es um das Lesen von Konfigurationsdateien, das Schreiben von Logs, die Verarbeitung großer Datenmengen oder die Projektverwaltung geht – die Fähigkeit, richtig mit Dateien und Verzeichnissen zu interagieren, ist für jeden C++-Entwickler notwendig. In diesem Artikel werden wir die grundlegenden Ansätze für die Arbeit mit dem Dateisystem in C++ behandeln, angefangen bei klassischen C-Funktionen bis hin zum modernen std::filesystem, das in C++17 eingeführt wurde.



Wir werden praktische Beispiele betrachten, die Ihnen helfen, nicht nur die Theorie zu verstehen, sondern das erworbene Wissen auch sofort in realen Projekten anzuwenden. Alle Codebeispiele sind getestet und einsatzbereit.



1. Grundlagen der Dateiarbeit: Ein-/Ausgabestreams



Die gebräuchlichste Methode zur Arbeit mit Dateien in C++ ist die Verwendung der Bibliothek <fstream>. Sie stellt drei Hauptklassen zur Verfügung:



  • std::ifstream – zum Lesen aus einer Datei (input file stream);
  • std::ofstream – zum Schreiben in eine Datei (output file stream);
  • std::fstream – zum Lesen und Schreiben (file stream).


Lesen aus einer Datei



Um Daten aus einer Datei zu lesen, erstellen Sie ein Objekt std::ifstream und öffnen Sie die Datei. Der einfachste Weg, eine Datei zeilenweise zu lesen, ist die Verwendung der Funktion std::getline:



#include <iostream>#include <fstream>#include <string>

int main() { std::ifstream inputFile("example.txt"); if (!inputFile.is_open()) { std::cerr << "Fehler beim Öffnen der Datei!" << std::endl; return 1; }

std::string line; while (std::getline(inputFile, line)) { std::cout << line << std::endl; }

inputFile.close(); return 0;}


Beachten Sie die Überprüfung mit is_open() – dies ist eine wichtige Praxis, die einen Programmabsturz verhindert, wenn die Datei nicht vorhanden ist.



Schreiben in eine Datei



Zum Schreiben von Daten wird std::ofstream verwendet. Standardmäßig wird die Datei neu erstellt (Modus trunc). Wenn Sie Daten an das Ende anhängen möchten, verwenden Sie das Flag std::ios::app:



#include <iostream>#include <fstream>

int main() { std::ofstream outputFile("output.txt", std::ios::app); if (!outputFile.is_open()) { std::cerr << "Fehler beim Erstellen der Datei!" << std::endl; return 1; }

outputFile << "Zeile 1" << std::endl; outputFile << "Zeile 2" << std::endl; outputFile << "Zahl: " << 42 << std::endl;

outputFile.close(); return 0;}


Arbeiten mit Binärdateien



Für Binärdaten verwenden Sie die Methoden read() und write() unter Angabe der Blockgröße:



#include <iostream>#include <fstream>#include <cstring>

struct Record { int id; char name[50]; double value;};

int main() { // Schreiben Record r = {1, "Testeintrag", 3.14}; std::ofstream binOut("data.bin", std::ios::binary); binOut.write(reinterpret_cast<const char*>(&r), sizeof(r)); binOut.close();

// Lesen Record r2; std::ifstream binIn("data.bin", std::ios::binary); binIn.read(reinterpret_cast<char*>(&r2), sizeof(r2)); binIn.close();

std::cout << "ID: " << r2.id << ", Name: " << r2.name << ", Value: " << r2.value << std::endl; return 0;}


2. Moderner Ansatz: Die Bibliothek std::filesystem (C++17)



Ab C++17 wurde der Standardbibliothek <filesystem> hinzugefügt, die die Arbeit mit dem Dateisystem erheblich vereinfacht. O

Blogs

Buchempfehlungen