<experimental/filesystem> directory_iterator clase

Importante

En esta página se describe la directory_iterator clase de la implementación prestandard <experimental/filesystem> de la especificación técnica del sistema de archivos ISO C++ (N4100). Esta API no es la misma que la clase C++17 directory_iterator en <filesystem>. Usa firmas diferentes, incluido un conjunto más estrecho de constructores que no tiene ninguna directory_options sobrecarga. La implementación experimental se quitó a partir del conjunto de herramientas de Visual C++ (MSVC) 14.51 Microsoft. En su lugar, el nuevo código debe usar la clase C++17 directory_iterator .

Describe un iterador de entrada que se secuencia a través de los nombres de archivo de un directorio. Para un iterador X, la expresión *X se evalúa como un objeto de clase directory_entry que encapsula el nombre de archivo y todo lo que se conoce sobre su estado.

La clase almacena un objeto de tipo path, denominado mydir aquí para los fines de exposición, que representa el nombre del directorio que se va a secuenciar y un objeto de tipo directory_entry llamado myentry aquí, que representa el nombre de archivo actual en la secuencia de directorios. Un objeto construido predeterminado de tipo directory_entry tiene un nombre pathname vacío mydir y representa el iterador de fin de secuencia.

Por ejemplo, dado el directorio abc con entradas def y ghi, el código :

for (directory_iterator next(path("abc")), end; next != end; ++next) visit(next->path());

llama a visit con los argumentos path("abc/def") y path("abc/ghi").

Sintaxis

class directory_iterator;

Constructores

Constructor Descripción
directory_iterator Construye un iterador de entrada que se secuencia a través de los nombres de archivo de un directorio.

Funciones miembro

Función de miembro Descripción
increment Intenta avanzar al siguiente nombre de archivo en el directorio.

Operators

Operador Descripción
operator!= Devuelve !(*this == right).
operator= Los operadores de asignación de miembros predeterminados se comportan según lo previsto.
operator== Devuelve true solo si y *thisright son iteradores de fin de secuencia o ambos no son iteradores de fin de secuencia.
operator* Devuelve myentry.
operator-> Devuelve &**this.
operator++ Llama a increment(), devuelve *thiso realiza una copia del objeto , llama a increment()y, a continuación, devuelve la copia.

Requisitos

Encabezado: <experimental/filesystem>

Espacio de nombres:std::experimental::filesystem

directory_iterator::directory_iterator

El primer constructor genera un iterador de fin de secuencia. Los constructores que toman un pval argumento lo almacenan en mydiry, a continuación, intentan abrir y leer mydir como un directorio. Si se ejecuta correctamente, almacenan el primer nombre de archivo en el directorio de myentry; de lo contrario, generan un iterador de fin de secuencia. La sobrecarga que toma un ec argumento notifica errores en ec lugar de producir una excepción. Los constructores de copia y movimiento se comportan según lo previsto.

directory_iterator() noexcept;
explicit directory_iterator(const path& pval);

directory_iterator(const path& pval, error_code& ec) noexcept;
directory_iterator(const directory_iterator&) = default;
directory_iterator(directory_iterator&&) = default;

Parameters

pval
Ruta de acceso del nombre de archivo almacenado.

ec
Código de error de estado.

directory_iterator
Objeto almacenado.

directory_iterator::increment

La función intenta avanzar al siguiente nombre de archivo del directorio. Si se ejecuta correctamente, almacena ese nombre de archivo en myentry; de lo contrario, genera un iterador de fin de secuencia.

directory_iterator& increment(error_code& ec) noexcept;

Parameters

ec
Código de error de estado.

directory_iterator::operator!=

El operador devuelve !(*this == right).

bool operator!=(const directory_iterator& right) const;

Parameters

right
que directory_iterator se compara con .directory_iterator

directory_iterator::operator=

Los operadores de asignación de miembros predeterminados se comportan según lo previsto.

directory_iterator& operator=(const directory_iterator&) = default;
directory_iterator& operator=(directory_iterator&&) = default;

Parameters

right
objeto directory_iterator que se copia en .directory_iterator

directory_iterator::operator==

El operador true devuelve solo si y *thisright son iteradores de fin de secuencia o ambos no son iteradores de fin de secuencia.

bool operator==(const directory_iterator& right) const;

Parameters

right
que directory_iterator se compara con .directory_iterator

directory_iterator::operator*

El operador miembro devuelve myentry.

const directory_entry& operator*() const;

directory_iterator::operator->

La función miembro devuelve &**this.

const directory_entry * operator->() const;

directory_iterator::operator++

La primera función miembro llama a increment()y, a continuación, devuelve *this. La segunda función miembro realiza una copia del objeto, llama a increment()y, a continuación, devuelve la copia.

directory_iterator& operator++();
directory_iterator operator++(int);

Parameters

int
Argumento ficticio. Se trata de una convención de C++ que solo se usa para distinguir el operador de incremento de postfijo del operador de incremento de prefijo. El estándar de C++ requiere que el formulario de postfijo tome un parámetro int ficticio.

Consulte también

<experimental/filesystem>
directory_entry clase