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++: für Anfänger



Die Arbeit mit dem Dateisystem ist eine der Kernaufgaben jedes Programmierers. In C++ gibt es mehrere Möglichkeiten, mit Dateien und Verzeichnissen zu interagieren: von den klassischen Streams fstream bis zum modernen std::filesystem (C++17). In diesem Artikel werden wir die grundlegenden Operationen behandeln: Lesen und Schreiben von Dateien, Überprüfen ihrer Existenz, Erstellen und Löschen von Ordnern sowie Navigation durch das Dateisystem. Alle Codebeispiele sind in C++ geschrieben und für Anfänger geeignet.



1. Grundlagen der Dateiarbeit mit fstream



Die Klassen ifstream (Eingabe aus Datei), ofstream (Ausgabe in Datei) und fstream (Ein-/Ausgabe) sind die grundlegenden Werkzeuge für die Arbeit mit Text- und Binärdateien. Sie befinden sich in der Header-Datei <fstream>.



Lesen aus einer Datei

Um Daten aus einer Datei zu lesen, erstellen Sie ein ifstream-Objekt und öffnen Sie die Datei. Stellen Sie sicher, dass die Datei existiert, sonst befindet sich der Stream in einem Fehlerzustand.



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

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

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

file.close(); return 0;}


Schreiben in eine Datei

Verwenden Sie zum Schreiben ofstream. Wenn die Datei nicht existiert, wird sie erstellt. Wenn sie existiert, wird der Inhalt überschrieben (sofern nicht das Flag std::ios::app angegeben ist).



#include <fstream>

int main() { std::ofstream file("output.txt"); if (!file.is_open()) { std::cerr << "Datei konnte nicht erstellt werden"; return 1; }

file << "Hello, world!"; file << "C++ Dateisystem";

file.close(); return 0;}


Anhängen von Daten an das Ende einer Datei

Verwenden Sie das Flag std::ios::app (append), um Daten an das Ende anzuhängen, ohne vorherige Daten zu löschen.



std::ofstream file("log.txt", std::ios::app);file << "Neuer Eintrag";file.close();


2. Arbeiten mit Verzeichnissen und dem Dateisystem (C++17)



Ab C++17 enthält die Standardbibliothek den Header <filesystem>, der eine bequeme und plattformunabhängige Schnittstelle für die Arbeit mit dem Dateisystem bietet. Um ihn zu verwenden, fügen Sie das Compiler-Flag -std=c++17 (oder höher) hinzu und binden Sie <filesystem> ein.



Überprüfen der Existenz einer Datei oder eines Verzeichnisses

#include <iostream>#include <filesystem>namespace fs = std::filesystem;

int main() { fs::path p = "example.txt"; if (fs::exists(p)) { std::cout << "Datei existiert"; std::cout << "Größe: " << fs::file_size(p) << " Bytes"; } else { std::cout << "Datei nicht gefunden"; } return 0;}


Erstellen und Löschen von Verzeichnissen

#include <filesystem>namespace fs = std::filesystem;

int main() { // Ein einzelnes Verzeichnis erstellen if (fs::create_directory("my_folder")) { std::cout << "Ordner erstellt"; }

// Verschachtelte Verzeichnisse erstellen fs::create_directories("a/b/c");

// Leeres Verzeichnis löschen fs::remove("my_folder");

// Verzeichnis mit gesamten Inhalt löschen (Vorsicht!) // fs::remove_all("a");

return 0;}


Durchlaufen des Verzeichnisinhalts

#include <iostream>#include <filesystem>namespace fs = std::filesystem;

int main() { std::string path = "."; for (const auto& entry : fs::directory_iterator(path)) { if

Blogs

Buchempfehlungen