C++

Was tun bei ‚fatal error: stringstream: Datei oder Verzeichnis nicht gefunden‘ in C++?

Problem:

Dein C++-Code enthält eine Zeile wie

#include <stringstream>

da du std::stringstream benutzen möchtest, aber dein Compiler zeigt dir diese Fehlermeldung an:

main.cpp:2:10: fatal error: stringstream: Datei oder Verzeichnis nicht gefunden
 #include 
          ^~~~~~~~~~~~~~
compilation terminated.

Solution:

Der Header heißt sstream, nicht stringstream! Benutze diese #include-Direktive:

#include <sstream>
Posted by Uli Köhler in C++

Dateien löschen mit der C++17-filesystem-Bibliothek

Um eine Datei (zum Beispiel test.txt) in C++ zu löschen benutze remove aus der C++17-filesystem-Bibliothek:

remove("test.txt");

Vollständiges Beispiel:

#include <experimental/filesystem>
using namespace std::experimental::filesystem;

int main() {
    remove("test.txt");
}

Mit GCC musst du die Datei wie Folgt kompilieren:

g++ -o delete-cpp17 delete-cpp17.cpp -lstdc++fs

Die stdc++fs-Bibliothek muss gelinkt werden, um die Funktionen aus der C++17-Filesystem-Bibliothek einzubinden.

remove löscht Verzeichnisse nicht rekursiv, also können nur leere Verzeichnisse gelöscht werden! Benutze für das Löschen eines Verzeichnisses inklusive aller Unterverzeichnisse und darin enthaltenen Dateienremove_all oder lies unseren Post dazu: Dateien und Ordner rekursiv löschen mit der C++17-filesystem-Bibliothek

Posted by Uli Köhler in C++

Dateien und Ordner rekursiv löschen mit der C++17-filesystem-Bibliothek

Um mit der C++17-filesystem-Bibliothek ein Verzeichnis rekursiv zu löschen (zum Beispiel mein-verzeichnis), benutze remove_all:

remove_all("mein-verzeichnis");

Diese Zeile löscht mein-verzeichnis und alle darin enthaltenen Unterverzeichnisse und Dateien (= rekursiv).

Vollständiges Beispiel:

#include <experimental/filesystem>
using namespace std::experimental::filesystem;

int main() {
    remove_all("mein-verzeichnis");
}

Mit GCC musst du die Datei wie Folgt kompilieren:

g++ -o delete-cpp17 delete-cpp17.cpp -lstdc++fs

Die stdc++fs-Bibliothek muss gelinkt werden, um die Funktionen aus der C++17-Filesystem-Bibliothek einzubinden.

Falls du stattdessen nur ein leeres Verzeichnis oder eine einzelne Datei löschen möchtest (ohne Unterverzeichnisse), benutze remove anstatt remove_all oder lies unseren Post dazu: Dateien löschen mit der C++17-filesystem-Bibliothek

Posted by Uli Köhler in C++