Espacios de nombres
Variantes
Acciones

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.

#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"