std::filesystem::recursive_directory_iterator::depth
De cppreference.com
int depth() const; |
(desde C++17) | |
Devuelve el número de directorios desde el directorio inicial al directorio iterado actualmente, es decir, la profundidad actual de la jerarquía de directorios.
El directorio de inicio tiene una profundidad de 0, sus subdirectorios tienen una profundidad de 1, etc.
El comportamiento no está definido si *this es el iterador final.
Contenido |
[editar] Parámetros
(Ninguno)
[editar] Valor de retorno
Profundidad actual de la jerarquía de directorios.
[editar] Excepciones
No lanza nada.
[editar] Ejemplo
Este ejemplo utiliza la profundidad de iteración para calcular la sangría de una impresión de árbol de directorio.
Ejecuta este código
#include <fstream> #include <iostream> #include <string> #include <filesystem> namespace fs = std::filesystem; int main() { fs::current_path(fs::temp_directory_path()); fs::create_directories("entorno_aislado/a/b/c"); fs::create_directories("entorno_aislado/a/b/d/e"); std::ofstream("entorno_aislado/a/b/archivo1.txt"); fs::create_symlink("a", "entorno_aislado/syma"); for(auto i = fs::recursive_directory_iterator("entorno_aislado"); 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'; } fs::remove_all("entorno_aislado"); }
Salida:
"entorno_aislado/a" "entorno_aislado/a/b" "entorno_aislado/a/b/c" "entorno_aislado/a/b/d" "entorno_aislado/a/b/d/e" "entorno_aislado/a/b/archivo1.txt" "entorno_aislado/syma" -> "a"