<filesystem> nicht in namespace std enthalten?
-
Hi(gh)!
Nur zum besseren Verständnis: seit C++17 gibt es ja diese eigene Bibliothek <filesystem> für Dateisystemzugriffe wie z. B. Ordner erstellen... ich stelle beim Kompilieren fest, dass namespace std die Funktionen von <filesystem> (z. B. create_directory() nicht kennt!
Da werde ich mich wohl doch an den Codeschipsel von Lasha Khintibidze (https://www.delftstack.com/de/howto/cpp/cpp-create-directory/ - diese Georgier programmieren wie die Götter! Das freut mich als Kartwelophiler...) halten müssen... kann ich eigentlich mehrere namespaces verwenden?
Bis bald im Khyberspace!
Yadgar
-
Hast du überhaupt den C++-17 Modus deines Compilers aktiviert?
-
Erstens das was @firefly gesagt hat. Zweitens sind nicht automatisch alle Features eines Standards auch in jedem Compiler umgesetzt. Gerade in der Anfangszeit von C++17 erinnere ich mich, dass z.B. mingw64 filesystem nicht dabei hatte.
Welchen Compiler in welcher Version verwendest du denn? Nimms mir nicht krumm, wenn ich sagte, mich würde es nicht wundern, wenn dein Compiler anstatt mit Bits und Bytes mit hölzernen Zahnrädern arbeitet.Hier z.b. die Liste für C++20: https://en.cppreference.com/w/cpp/compiler_support/20
-
Und was heißt "nicht kennt"?
Bitte genaue Fehlermeldung liefern inklusive welchen compiler du verwendest
-
@firefly sagte in <filesystem> nicht in namespace std enthalten?:
Hast du überhaupt den C++-17 Modus deines Compilers aktiviert?
Ich erinnere mich noch, dass man irgendwann z.B. bei GCC neben
-std=c++17
auch noch explizit die Filesystem-Bibliothek mit-lstdc++fs
linken musste. Ich weiss nicht, ob das immer noch so ist und das dürfte auch zu einem Linker-Fehler führen, anstatt dass "namespace std die Funktionen nicht kennt".Daher wäre das wirklich hilfreich:
Bitte genaue Fehlermeldung liefern inklusive welchen compiler du verwendest
-
@It0101 sagte in <filesystem> nicht in namespace std enthalten?:
Welchen Compiler in welcher Version verwendest du denn? Nimms mir nicht krumm, wenn ich sagte, mich würde es nicht wundern, wenn dein Compiler anstatt mit Bits und Bytes mit hölzernen Zahnrädern arbeitet.
Mit Eselantrieb! Bei uns in Afghanistan... nein, ernsthaft: g++ --version gibt das hier aus:
g++ (Debian 10.2.1-6) 10.2.1 20210110
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.Dann sollte er doch C++17 eigentlich beherrschen, oder nicht?
Bis bald im Khyberspace!
Yadgar
-
Hi(gh)!
Also, die Fehlermeldung:
oac.cc:11:21: error: ‘filesystem’ is not a namespace-name 11 | namespace fs = std::filesystem; |
Der Kontext sieht so aus:
#include<iostream> #include <fstream> #include <string> #include <vector> #include <dirent.h> #include <filesystem> using namespace std; namespace fs = std::filesystem;
-
@Yadgar sagte in <filesystem> nicht in namespace std enthalten?:
Dann sollte er doch C++17 eigentlich beherrschen, oder nicht?
Wenn du ihn per Kommandozeilen-Option
-std=c++17
in den C++-17-Modus versetzt, dann ja (s.o, GCC unterstützt die Filesystem-Library soweit ich weiss seit Version 8 komplett). Ansonsten kann es sein, dass der einen anderen Standard als Default hat und dortfilesystem
entweder nicht existiert, oder aber sich instd::experimental::filesystem
befindet.-std=...
bei GCC und Clang, oder/std:...
bei MSVC sollte man den Compilern besser immer mitgeben, dann meckern sie auch, wenn sie den Standard nicht unterstützen.
-
@Finnegan sagte in <filesystem> nicht in namespace std enthalten?:
@Yadgar sagte in <filesystem> nicht in namespace std enthalten?:
Dann sollte er doch C++17 eigentlich beherrschen, oder nicht?
Wenn du ihn per Kommandozeilen-Option
-std=c++17
in den C++-17-Modus versetzt, dann ja (s.o, GCC unterstützt die Filesystem-Library soweit ich weiss seit Version 8 komplett). Ansonsten kann es sein, dass der einen anderen Standard als Default hat und dortfilesystem
entweder nicht existiert, oder aber sich instd::experimental::filesystem
befindet.Ja, das war es! Danke für den Tipp!
-
@Yadgar sagte in <filesystem> nicht in namespace std enthalten?:
Ja, das war es! Danke für den Tipp!
Der Tip steckte auch schon in den vorherigen Antworten:
@firefly sagte in <filesystem> nicht in namespace std enthalten?:
Hast du überhaupt den C++-17 Modus deines Compilers aktiviert?
@Finnegan in <filesystem> nicht in namespace std enthalten?:
Ich erinnere mich noch, dass man irgendwann z.B. bei GCC neben -std=c++17 auch noch [...]
Bitte genauer lesen und versuchen zu verstehen, das spart dir und uns einiges an vermeidbarer Arbeit