std::filesystem::recursive_directory_iterator:: disable_recursion_pending
|
void
disable_recursion_pending
(
)
;
|
(seit C++17) | |
Deaktiviert die Rekursion zum aktuell referenzierten Unterverzeichnis, falls vorhanden.
Der Aufruf modifiziert das ausstehende Rekursionsflag des Iterators auf solche Weise, dass beim nächsten Aufruf von increment der Iterator innerhalb des aktuellen Verzeichnisses voranschreitet, selbst wenn er derzeit auf ein Unterverzeichnis verweist, das noch nicht besucht wurde.
Der Status des ausstehenden Rekursionsflags kann mit recursion_pending() abgefragt werden, welcher false nach diesem Aufruf ist. Es wird zurückgesetzt auf true nach increment , und sein Anfangswert ist ebenfalls true .
Das Verhalten ist undefiniert, wenn * this der End-Iterator ist.
Inhaltsverzeichnis |
Parameter
(keine)
Rückgabewert
(keine)
Ausnahmen
Kann implementierungsdefinierte Ausnahmen auslösen.
Beispiel
#include <cstdlib> #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"); std::system("tree sandbox"); for (auto i = fs::recursive_directory_iterator("sandbox"); i != fs::recursive_directory_iterator(); ++i) { std::cout << std::string(i.depth() * 2, ' ') << *i; if (fs::is_symlink(i->symlink_status())) std::cout << " -> " << fs::read_symlink(*i); std::cout << '\n'; // nicht in "b" absteigen if (i->path().filename() == "b") i.disable_recursion_pending(); } fs::remove_all("sandbox"); }
Mögliche Ausgabe:
sandbox ├── a │ └── b │ ├── c │ ├── d │ │ └── e │ └── file1.txt └── syma -> a "sandbox/a" "sandbox/a/b" "sandbox/syma" -> "a"
Siehe auch
|
prüft, ob die Rekursion für das aktuelle Verzeichnis deaktiviert ist
(öffentliche Elementfunktion) |
|
|
wechselt zum nächsten Eintrag
(öffentliche Elementfunktion) |