Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
Describe un iterador de entrada que secuencia por medio de los nombres de archivo de un directorio, posiblemente descendiendo a los subdirectorios de forma repetitiva. En el caso de un iterador X, la expresión *X se evalúa como un objeto de la clase directory_entry que contiene el nombre de archivo y cualquier elemento conocido sobre su estado.
Para obtener más información y ejemplos de código, vea Exploración del sistema de archivos (C++).
Sintaxis
class recursive_directory_iterator;
Comentarios
La plantilla de clase almacena:
un objeto del tipo
stack<pair<directory_iterator, path>>, de nombremystackaquí, para la exposición, que representa el anidamiento de directorios que se van a secuenciarun objeto del tipo
directory_entry, de nombremyentryaquí, que representa el nombre de archivo actual en la secuencia de directoriosun objeto del tipo
bool, de nombreno_pushaquí, que registra si está deshabilitado el descenso recursivo a subdirectoriosun objeto del tipo
directory_options, de nombremyoptionsaquí, que registra las opciones establecidas durante la construcción
Un objeto construido predeterminado de tipo recursive_directory_entry tiene un iterador de final de secuencia en mystack.top().first y representa el iterador de final de secuencia. Por ejemplo, si se tiene el directorio abc con entradas def (un directorio), def/ghi y jkl, el código:
for (recursive_directory_iterator next(path("abc")), end; next != end; ++next)
visit(next->path());
llama a visit con los argumentos path("abc/def/ghi") y path("abc/jkl"). Puede calificar secuencias por medio de un subárbol de directorios de dos maneras:
Un directorio symlink se examina únicamente si se construye
recursive_directory_iteratorcon un argumentodirectory_optionscuyo valor esdirectory_options::follow_directory_symlink.Si se llama a
disable_recursion_pending, un directorio posterior encontrado durante un incremento no se examina de forma recursiva.
Constructores
| Constructor | Descripción |
|---|---|
| recursive_directory_iterator | Construye un objeto recursive_directory_iterator. |
Funciones miembro
| Función de miembro | Descripción |
|---|---|
| depth | Devuelve mystack.size() - 1, así que pval está en profundidad cero. |
| disable_recursion_pending | Almacena true en no_push. |
| increment | Avanza al siguiente nombre de archivo de la secuencia. |
| options | Devuelve myoptions. |
| pop | Devuelve el siguiente objeto. |
| recursion_pending | Devuelve !no_push. |
Operadores
| Operador | Descripción |
|---|---|
| operator!= | Devuelve !(*this == right). |
| operator= | Los operadores predeterminados de asignación de miembros se comportan según lo previsto. |
| operator== | Solo devuelve true si *this y right son iteradores de final de secuencia o si ninguno lo es. |
| operator* | Devuelve myentry. |
| operator-> | Devuelve &**this. |
| operator++ | Incrementa recursive_directory_iterator. |
Requisitos
Encabezado:<filesystem>
Espacio de nombres: std::tr2::sys
recursive_directory_iterator::depth
Devuelve mystack.size() - 1, así que pval está en profundidad cero.
int depth() const;
recursive_directory_iterator::disable_recursion_pending
Almacena true en no_push.
void disable_recursion_pending();
recursive_directory_iterator::increment
Avanza al siguiente nombre de archivo de la secuencia.
recursive_directory_iterator& increment(error_code& ec) noexcept;
Parámetros
ec
Código de error especificado.
Comentarios
La función intenta avanzar al siguiente nombre de archivo de la secuencia anidada. Si es correcto, almacena ese nombre de archivo en myentry; en caso contrario, produce un iterador de final de secuencia.
recursive_directory_iterator::operator!=
Devuelve !(*this == right).
bool operator!=(const recursive_directory_iterator& right) const;
Parámetros
right
recursive_directory_iterator, para la comparación.
recursive_directory_iterator::operator=
Los operadores predeterminados de asignación de miembros se comportan según lo previsto.
recursive_directory_iterator& operator=(const recursive_directory_iterator&) = default;
recursive_directory_iterator& operator=(recursive_directory_iterator&&) noexcept = default;
Parámetros
recursive_directory_iterator
recursive_directory_iterator que se va a copiar en recursive_directory_iterator.
recursive_directory_iterator::operator==
Solo devuelve true si *this y right son iteradores de final de secuencia o si ninguno lo es.
bool operator==(const recursive_directory_iterator& right) const;
Parámetros
right
recursive_directory_iterator, para la comparación.
recursive_directory_iterator::operator*
Devuelve myentry.
const directory_entry& operator*() const;
recursive_directory_iterator::operator->
Devuelve &**this.
const directory_entry * operator->() const;
recursive_directory_iterator::operator++
Incrementa recursive_directory_iterator.
recursive_directory_iterator& operator++();
recursive_directory_iterator& operator++(int);
Parámetros
int
Incremento especificado.
Comentarios
La primera función miembro llama a increment() y luego devuelve *this. La segunda función miembro hace una copia del objeto, llama a increment() y luego devuelve la copia.
recursive_directory_iterator::options
Devuelve myoptions.
directory_options options() const;
recursive_directory_iterator::pop
Devuelve el siguiente objeto.
void pop();
Comentarios
Si depth() == 0, el objeto se convierte en un iterador de final de secuencia. De lo contrario, la función miembro termina el análisis del directorio actual (más profundo) y lo reanuda en el siguiente nivel inferior.
recursive_directory_iterator::recursion_pending
Devuelve !no_push.
bool recursion_pending() const;
recursive_directory_iterator::recursive_directory_iterator
Construye un objeto recursive_directory_iterator.
recursive_directory_iterator() noexcept;
explicit recursive_directory_iterator(const path& pval);
recursive_directory_iterator(const path& pval,
error_code& ec) noexcept;
recursive_directory_iterator(const path& pval,
directory_options opts);
recursive_directory_iterator(const path& pval,
directory_options opts,
error_code& ec) noexcept;
recursive_directory_iterator(const recursive_directory_iterator&) = default;
recursive_directory_iterator(recursive_directory_iterator&&) noexcept = default;
Parámetros
pVal
La ruta de acceso especificada.
error_code
Código de error especificado.
Opta
Opciones de directorio especificadas.
recursive_directory_iterator
recursive_directory_iterator del que el recursive_directory_iterator construido va a ser una copia.
Comentarios
El primer constructor crea un iterador de final de secuencia. Los constructores segundo y tercero almacenan false en no_push y directory_options::none en myoptions, e intentan abrir y leer pval como un directorio. Si lo logran, inicializan mystack y myentry para designar el primer nombre de archivo que no es de directorio de la secuencia anidada; de lo contrario, producen un iterador de final de secuencia.
Los constructores cuarto y quinto se comportan igual que el segundo y el tercero, salvo que primero almacenan opts en myoptions. El constructor predeterminado se comporta según lo previsto.
Consulte también
Referencia de archivos de encabezado
<filesystem>
Exploración del sistema de archivos (C++)