Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Descreve um iterador de entrada que sequencia os nomes de arquivo em um diretório, possivelmente em ordem decrescente em subdiretórios, recursivamente. Para um iterador X, a expressão *X é avaliada como um objeto da classe directory_entry que encapsula o nome do arquivo e o que for conhecido sobre seu status.
Para obter mais informações e exemplos de código, consulte Navegação do Sistema de Arquivos (C++).
Sintaxe
class recursive_directory_iterator;
Comentários
O modelo de classe armazena:
um objeto do tipo
stack<pair<directory_iterator, path>>, chamadomystackaqui para finalidade de exposição, que representa o aninhamento de diretórios a serem sequenciados.um objeto do tipo
directory_entry, chamado aquimyentry, que representa o nome do arquivo atual na sequência de diretórios.um objeto do tipo
bool, chamado aquino_push, que registrará se o descendente recursivo em subdiretórios estiver desabilitado.um objeto do tipo
directory_options, chamado aquimyoptions, que registra as opções estabelecidas na construção.
Um objeto construído padrão do tipo recursive_directory_entry tem um iterador de final de sequência em mystack.top().firste representa o iterador de final de sequência. Por exemplo, dado o diretório abc com entradas def (um diretório), def/ghi e jkl, o código:
for (recursive_directory_iterator next(path("abc")), end; next != end; ++next)
visit(next->path());
chamará a visita com os argumentos path("abc/def/ghi") epath("abc/jkl"). É possível qualificar o sequenciamento por meio de uma subárvore de diretório de duas maneiras:
Um symlink de diretório será examinado somente se você construir um
recursive_directory_iteratorcom um argumentodirectory_optionscom valor dedirectory_options::follow_directory_symlink.Se você chamar
disable_recursion_pending, um diretório subsequente encontrado durante um incremento não será examinado recursivamente.
Construtores
| Construtor | Descrição |
|---|---|
| recursive_directory_iterator | Constrói um recursive_directory_iterator. |
Funções de membro
| Função de membro | Descrição |
|---|---|
| depth | Retorna mystack.size() - 1, portanto, pval está na profundidade zero. |
| disable_recursion_pending | Armazena true em no_push. |
| increment | Avança para o próximo nome de arquivo na sequência. |
| options | Retorna myoptions. |
| pop | Retorna o próximo objeto. |
| recursion_pending | Retorna !no_push. |
Operadores
| Operador | Descrição |
|---|---|
| operator!= | Retorna !(*this == right). |
| operator= | Os operadores de atribuição de membro usados como padrão se comportam como esperado. |
| operator== | Retornará true somente se ambos *this e right forem iteradores de final de sequência ou se ambos não forem iteradores de final de sequência. |
| operator* | Retorna myentry. |
| operator-> | Retorna &**this. |
| operador++ | Incrementa o recursive_directory_iterator. |
Requisitos
Cabeçalho:<filesystem>
Namespace: std::tr2::sys
recursive_directory_iterator::depth
Retorna mystack.size() - 1, portanto, pval está na profundidade zero.
int depth() const;
recursive_directory_iterator::disable_recursion_pending
Armazena true em no_push.
void disable_recursion_pending();
recursive_directory_iterator::increment
Avança para o próximo nome de arquivo na sequência.
recursive_directory_iterator& increment(error_code& ec) noexcept;
Parâmetros
ec
Código de erro especificado.
Comentários
A função tenta avançar para o próximo nome de arquivo na sequência aninhada. Se for bem-sucedido, armazenará esse nome de arquivo em myentry, caso contrário, produzirá um iterador de final de sequência.
recursive_directory_iterator::operator!=
Retorna !(*this == right).
bool operator!=(const recursive_directory_iterator& right) const;
Parâmetros
direita
O recursive_directory_iterator para comparação.
recursive_directory_iterator::operator=
Os operadores de atribuição de membro usados como padrão se comportam como esperado.
recursive_directory_iterator& operator=(const recursive_directory_iterator&) = default;
recursive_directory_iterator& operator=(recursive_directory_iterator&&) noexcept = default;
Parâmetros
recursive_directory_iterator
O recursive_directory_iterator sendo copiado para o recursive_directory_iterator.
recursive_directory_iterator::operator==
Retornará true somente se ambos *this e right forem iteradores de final de sequência ou se ambos não forem iteradores de final de sequência.
bool operator==(const recursive_directory_iterator& right) const;
Parâmetros
direita
O recursive_directory_iterator para comparação.
recursive_directory_iterator::operator*
Retorna myentry.
const directory_entry& operator*() const;
recursive_directory_iterator::operator->
Retorna &**this.
const directory_entry * operator->() const;
recursive_directory_iterator::operator++
Incrementa o recursive_directory_iterator.
recursive_directory_iterator& operator++();
recursive_directory_iterator& operator++(int);
Parâmetros
int
O incremento especificado.
Comentários
A primeira função membro chama increment() e, em seguida, retorna *this. A segunda função membro copia o objeto, chama increment() e, em seguida, retorna a cópia.
recursive_directory_iterator::options
Retorna myoptions.
directory_options options() const;
recursive_directory_iterator::pop
Retorna o próximo objeto.
void pop();
Comentários
Se depth() == 0, o objeto se tornará um iterador de final de sequência. Caso contrário, a função de membro termina a varredura do diretório atual (mais profundo) e retoma no próximo nível inferior.
recursive_directory_iterator::recursion_pending
Retorna !no_push.
bool recursion_pending() const;
recursive_directory_iterator::recursive_directory_iterator
Constrói um 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
O caminho especificado.
error_code
O código de erro especificado.
Opta
As opções de diretório especificadas.
recursive_directory_iterator
O recursive_directory_iterator do qual o recursive_directory_iterator construído é uma cópia.
Comentários
O primeiro construtor produz um iterador de fim de sequência. O segundo e terceiro construtores armazenam false em no_push e directory_options::none em myoptions e, em seguida, tentam abrir e ler pval como um diretório. Se bem-sucedidos, inicializam mystack e myentry designar o primeiro nome de arquivo não-diretório na sequência aninhada, caso contrário, produzirão um iterador de final de sequência.
O quarto e o quinto construtores se comportam da mesma maneira que o segundo e o terceiro, exceto que primeiro armazenam opts em myoptions. O construtor padrão se comporta conforme o esperado.
Confira também
Referência de Arquivos de Cabeçalho
<filesystem>
Navegação no sistema de arquivos (C++)