std::filesystem::recursive_directory_iterator::depth
Von cppreference.com
| int depth() const; |
(seit C++17) | |
Gibt die Anzahl der Verzeichnisse vom Startverzeichnis bis zum aktuell durchlaufenen Verzeichnis zurück, d. h. die aktuelle Tiefe der Verzeichnishierarchie.
Das Startverzeichnis hat die Tiefe 0, seine Unterverzeichnisse haben die Tiefe 1 usw.
Das Verhalten ist undefiniert, wenn *this der End-Iterator ist.
Inhalt |
[bearbeiten] Parameter
(keine)
[bearbeiten] Rückgabewert
Aktuelle Tiefe der Verzeichnishierarchie.
[bearbeiten] Ausnahmen
Wirft nichts.
[bearbeiten] Beispiel
Dieses Beispiel verwendet die Iterationstiefe, um die Einrückung der Ausgabe eines Verzeichnisbaums zu berechnen.
Führen Sie diesen Code aus
#include <filesystem> #include <fstream> #include <iostream> #include <string> namespace fs = std::filesystem; int main() { fs::current_path(fs::temp_directory_path()); fs::create_directories("sandbox/a/b/c"); fs::create_directories("sandbox/a/b/d/e"); std::ofstream("sandbox/a/b/file1.txt"); fs::create_symlink("a", "sandbox/syma"); for (auto i = fs::recursive_directory_iterator("sandbox"); i != fs::recursive_directory_iterator(); ++i) { std::cout << std::string(i.depth() << 1, ' ') << *i; if (fs::is_symlink(i->symlink_status())) std::cout << " -> " << fs::read_symlink(*i); std::cout << '\n'; } fs::remove_all("sandbox"); }
Ausgabe
"sandbox/syma" -> "a"
"sandbox/a"
"sandbox/a/b"
"sandbox/a/b/d"
"sandbox/a/b/d/e"
"sandbox/a/b/file1.txt"
"sandbox/a/b/c"