std::filesystem::recursive_directory_iterator:: depth
| Member functions | ||||
|
recursive_directory_iterator::depth
|
||||
| Non-member functions | ||||
|
int
depth
(
)
const
;
|
(depuis C++17) | |
Retourne le nombre de répertoires depuis le répertoire de départ jusqu'au répertoire actuellement itéré, c'est-à-dire la profondeur actuelle de la hiérarchie de répertoires.
Le répertoire de départ a une profondeur de 0 , ses sous-répertoires ont une profondeur de 1 , etc.
Le comportement n'est pas défini si * this est l'itérateur de fin.
Table des matières |
Paramètres
(aucun)
Valeur de retour
Profondeur actuelle de la hiérarchie du répertoire.
Exceptions
Ne lance rien.
Exemple
Cet exemple utilise la profondeur d'itération pour calculer l'indentation d'une impression d'arborescence de répertoires.
#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"); }
Sortie :
"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"