std::filesystem::recursive_directory_iterator:: disable_recursion_pending
|
void
disable_recursion_pending
(
)
;
|
(depuis C++17) | |
Désactive la récursion vers le sous-répertoire actuellement référencé, le cas échéant.
L'appel modifie l'indicateur de récursion en attente sur l'itérateur de telle manière que la prochaine fois que increment est appelé, l'itérateur avancera dans le répertoire courant même s'il fait actuellement référence à un sous-répertoire qui n'a pas été visité.
L'état du drapeau de récursion en attente peut être consulté avec recursion_pending() , qui est false après cet appel. Il est réinitialisé à true après increment , et sa valeur initiale est également true .
Le comportement est indéfini si * this est l'itérateur de fin.
Table des matières |
Paramètres
(aucun)
Valeur de retour
(aucun)
Exceptions
Peut lever des exceptions définies par l'implémentation.
Exemple
#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'; // ne pas descendre dans "b" if (i->path().filename() == "b") i.disable_recursion_pending(); } fs::remove_all("sandbox"); }
Sortie possible :
sandbox ├── a │ └── b │ ├── c │ ├── d │ │ └── e │ └── file1.txt └── syma -> a "sandbox/a" "sandbox/a/b" "sandbox/syma" -> "a"
Voir aussi
|
vérifie si la récursion est désactivée pour le répertoire courant
(fonction membre publique) |
|
|
avance à l'entrée suivante
(fonction membre publique) |