std::experimental::filesystem:: recursive_directory_iterator
|
Definido en el encabezado
<experimental/filesystem>
|
||
|
class
recursive_directory_iterator
;
|
(filesystem TS) | |
recursive_directory_iterator
es un
LegacyInputIterator
que itera sobre los elementos
directory_entry
de un directorio, y, recursivamente, sobre las entradas de todos los subdirectorios. El orden de iteración no está especificado, excepto que cada entrada de directorio se visita solo una vez.
Por defecto, los enlaces simbólicos no se siguen, pero esto puede habilitarse especificando la opción de directorio follow_directory_symlink en el momento de la construcción.
Los nombres de ruta especiales dot y dot-dot se omiten.
Si el
recursive_directory_iterator
avanza más allá de la última entrada del directorio de nivel superior, se vuelve igual al iterador construido por defecto, también conocido como iterador final. Dos iteradores finales siempre son iguales, desreferenciar o incrementar el iterador final es comportamiento indefinido.
Si un archivo o directorio se elimina o se agrega al árbol de directorios después de que se haya creado el iterador de directorio recursivo, no está especificado si el cambio se observaría a través del iterador.
Si la estructura del directorio contiene ciclos, el iterador final puede ser inalcanzable.
Contenidos |
Tipos de miembros
| Tipo de miembro | Definición |
value_type
|
filesystem::directory_entry
|
difference_type
|
std::ptrdiff_t
|
pointer
|
const filesystem::directory_entry*
|
reference
|
const filesystem::directory_entry&
|
iterator_category
|
std::input_iterator_tag
|
Funciones miembro
|
construye un iterador de directorio recursivo
(función miembro pública) |
|
|
(destructor)
|
destructor por defecto
(función miembro pública) |
Observadores |
|
|
accede a la entrada apuntada
(función miembro pública) |
|
|
devuelve las opciones activas actuales que afectan a la iteración
(función miembro pública) |
|
|
devuelve la profundidad de recursión actual
(función miembro pública) |
|
|
verifica si la recursión está deshabilitada para el directorio actual
(función miembro pública) |
|
Modificadores |
|
|
asigna contenidos
(función miembro pública) |
|
|
avanza a la siguiente entrada
(función miembro pública) |
|
|
mueve el iterador un nivel hacia arriba en la jerarquía de directorios
(función miembro pública) |
|
|
deshabilita la recursión hasta el siguiente incremento
(función miembro pública) |
|
Funciones no miembro
|
soporte para bucle for basado en rangos
(función) |
Además,
operator==
y
operator!=
se proporcionan, ya sea como miembros o como no miembros, según lo requerido por
LegacyInputIterator
.
Notas
Un
recursive_directory_iterator
normalmente mantiene un
puntero
con conteo de referencias (para satisfacer la semántica de copia superficial de
LegacyInputIterator
) a un objeto de implementación, que contiene:
- un contenedor (como std::vector ) de directory_iterator s no recursivos que forma la pila de recursión.
- el contador de profundidad de recursión (accesible con depth() ).
- las opciones de directorio utilizadas en la construcción (accesibles con options() ).
- el indicador de recursión pendiente (accesible con recursion_pending() , puede combinarse con las opciones de directorio para ahorrar espacio).
Ejemplo
#include <experimental/filesystem> #include <fstream> #include <iostream> namespace fs = std::experimental::filesystem; int main() { fs::create_directories("sandbox/a/b"); std::ofstream("sandbox/file1.txt"); fs::create_symlink("a", "sandbox/syma"); for (const fs::directory_entry& entry : fs::recursive_directory_iterator("sandbox")) std::cout << entry << '\n'; fs::remove_all("sandbox"); }
Salida posible:
"sandbox/a" "sandbox/a/b" "sandbox/file1.txt" "sandbox/syma"
Véase también
|
un iterador a los contenidos del directorio
(clase) |
|
|
una entrada de directorio
(clase) |
|
|
opciones para iterar contenidos del directorio
(enumeración) |