std::experimental::filesystem::recursive_directory_iterator::disable_recursion_pending
Von cppreference.com
< cpp | experimental | fs | recursive directory iterator
| void disable_recursion_pending(); |
(Dateisystem-TS) | |
Deaktiviert die Rekursion in das aktuell referenzierte Unterverzeichnis, falls vorhanden.
Der Aufruf modifiziert das "pending recursion"-Flag des Iterators so, dass beim nächsten Aufruf von increment der Iterator innerhalb des aktuellen Verzeichnisses vorrückt, auch wenn er derzeit auf ein noch nicht besuchtes Unterverzeichnis verweist.
Der Status des "pending recursion"-Flags kann mit recursion_pending() abgefragt werden, welcher nach diesem Aufruf false ist. Er wird nach einem increment wieder auf true zurückgesetzt, und sein Anfangswert ist ebenfalls true.
Das Verhalten ist undefiniert, wenn *this der End-Iterator ist.
Inhalt |
[edit] Parameter
(keine)
[edit] Rückgabewert
(keine)
[edit] Exceptions
Kann implementierungsdefinierte Ausnahmen auslösen.
[edit] Beispiel
Führen Sie diesen Code aus
#include <experimental/filesystem> #include <fstream> #include <iostream> #include <string> namespace fs = std::experimental::filesystem; int main() { 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(), ' ') << *i; if (fs::is_symlink(i->symlink_status())) std::cout << " -> " << fs::read_symlink(*i); std::cout << '\n'; // do not descend into "b" if (i->path().filename() == "b") i.disable_recursion_pending(); } fs::remove_all("sandbox"); }
Ausgabe
"sandbox/a" "sandbox/a/b" "sandbox/syma" -> "a"
[edit] Siehe auch
| prüft, ob die Rekursion für das aktuelle Verzeichnis deaktiviert ist (public member function) | |
| bewegt sich zum nächsten Eintrag (public member function) |