recursive_directory_iterator, classe
Décrit un itérateur d’entrée qui séquence les noms de fichiers dans un répertoire, éventuellement descendant dans des sous-répertoires de manière récursive. Pour un itérateur X
, l’expression *X
prend la valeur d’un objet de classe directory_entry
qui encapsule le nom de fichier et tout ce qui est connu de son état.
Pour plus d’informations et pour obtenir des exemples de code, consultez Navigation dans le système de fichiers (C++).
Syntaxe
class recursive_directory_iterator;
Notes
Le modèle de classe stocke :
un objet de type
stack<pair<directory_iterator, path>>
, appelémystack
ici à des fins d’exposition, qui représente le nid des répertoires à séquencerobjet de type
directory_entry
appelémyentry
ici, qui représente le nom de fichier actuel dans la séquence de répertoiresun objet de type
bool
, appeléno_push
ici, qui enregistre si la descente récursive dans les sous-répertoires est désactivéeun objet de type
directory_options
, appelémyoptions
ici, qui enregistre les options établies lors de la construction
Un objet construit par défaut de type recursive_directory_entry
possède un itérateur de fin de séquence et mystack.top().first
représente l’itérateur de fin de séquence. Par exemple, étant donné le répertoire abc
avec des entrées def
(un répertoire), def/ghi
et jkl
, le code :
for (recursive_directory_iterator next(path("abc")), end; next != end; ++next)
visit(next->path());
appellera visite avec les arguments path("abc/def/ghi")
et path("abc/jkl")
. Vous pouvez qualifier le séquencement via une sous-arborescence d’annuaire de deux façons :
Un lien symbolique de répertoire ne sera analysé que si vous construisez un
recursive_directory_iterator
directory_options
argument dont la valeur estdirectory_options::follow_directory_symlink
.Si vous appelez
disable_recursion_pending
, un répertoire suivant rencontré lors d’un incrément ne sera pas analysé de manière récursive.
Constructeurs
Constructeur | Description |
---|---|
recursive_directory_iterator | Construit un objet recursive_directory_iterator . |
Fonctions Membre
Fonction membre | Description |
---|---|
depth | Retourne mystack.size() - 1 , donc pval est à la profondeur zéro. |
disable_recursion_pending | Stocke true dans no_push . |
increment | Passe au nom de fichier suivant dans la séquence. |
options | Retourne myoptions . |
pop | Retourne l’objet suivant. |
recursion_pending | Retourne !no_push . |
Opérateurs
Opérateur | Description |
---|---|
operator!= | Retourne !(*this == right) . |
operator= | Les opérateurs d’affectation de membre par défaut se comportent comme prévu. |
operator== | Retourne true uniquement si les deux et droite *this sont des itérateurs de fin de séquence ou si les deux ne sont pas des itérateurs de fin de séquence. |
operator* | Retourne myentry . |
operator-> | Retourne &**this . |
operator++ | Incrémente le recursive_directory_iterator . |
Spécifications
Header :<filesystem>
Espace de noms : std::tr2::sys
recursive_directory_iterator::depth
Retourne mystack.size() - 1
, donc pval
est à la profondeur zéro.
int depth() const;
recursive_directory_iterator::disable_recursion_pending
Stocke true
dans no_push
.
void disable_recursion_pending();
recursive_directory_iterator::increment
Passe au nom de fichier suivant dans la séquence.
recursive_directory_iterator& increment(error_code& ec) noexcept;
Paramètres
Ce
Code d’erreur spécifié.
Notes
La fonction tente d’accéder au nom de fichier suivant dans la séquence imbriquée. En cas de réussite, il stocke ce nom de fichier dans myentry
; sinon, il produit un itérateur de fin de séquence.
recursive_directory_iterator::operator!=
Retourne !(*this == right)
.
bool operator!=(const recursive_directory_iterator& right) const;
Paramètres
right
Recursive_directory_iterator pour la comparaison.
recursive_directory_iterator::operator=
Les opérateurs d’affectation de membre par défaut se comportent comme prévu.
recursive_directory_iterator& operator=(const recursive_directory_iterator&) = default;
recursive_directory_iterator& operator=(recursive_directory_iterator&&) noexcept = default;
Paramètres
recursive_directory_iterator
Le recursive_directory_iterator copié dans le recursive_directory_iterator
.
recursive_directory_iterator::operator==
Retourne true
uniquement si les deux et droite *this
sont des itérateurs de fin de séquence ou si les deux ne sont pas des itérateurs de fin de séquence.
bool operator==(const recursive_directory_iterator& right) const;
Paramètres
right
Recursive_directory_iterator pour la comparaison.
recursive_directory_iterator::operator*
Retourne myentry
.
const directory_entry& operator*() const;
recursive_directory_iterator ::operator->
Retourne &**this
.
const directory_entry * operator->() const;
recursive_directory_iterator::operator++
Incrémente le recursive_directory_iterator
.
recursive_directory_iterator& operator++();
recursive_directory_iterator& operator++(int);
Paramètres
int
Incrément spécifié.
Notes
La première fonction membre appelle increment()
, puis retourne *this
. La deuxième fonction membre effectue une copie de l’objet, appelle increment()
, puis retourne la copie.
recursive_directory_iterator::options
Retourne myoptions
.
directory_options options() const;
recursive_directory_iterator::pop
Retourne l’objet suivant.
void pop();
Notes
Si depth() == 0
l’objet devient un itérateur de fin de séquence. Sinon, la fonction membre met fin à l’analyse du répertoire actif (le plus profond), et reprend au prochain niveau de profondeur.
recursive_directory_iterator::recursion_pending
Retourne !no_push
.
bool recursion_pending() const;
recursive_directory_iterator::recursive_directory_iterator
Construit un objet 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;
Paramètres
pval
Chemin d'accès spécifié.
error_code
Code d’erreur spécifié.
Opte
Options de répertoire spécifiées.
recursive_directory_iterator
recursive_directory_iterator
dont le recursive_directory_iterator
construit doit être une copie.
Notes
Le premier constructeur produit un itérateur de fin de séquence. Les deuxième et troisième constructeurs stockent false
et in directory_options::none
no_push
myoptions
, puis tentent d’ouvrir et de lire pval en tant que répertoire. En cas de réussite, ils initialisent mystack
et myentry
désignent le premier nom de fichier non-répertoire dans la séquence imbriquée ; sinon, ils produisent un itérateur de fin de séquence.
Les quatrième et cinquième constructeurs se comportent de la même façon que le deuxième et le troisième, sauf qu’ils ont d’abord choisi.myoptions
Le constructeur par défaut se comporte comme prévu.
Voir aussi
Informations de référence sur les fichiers d’en-tête
<filesystem>
Navigation dans le système de fichiers (C++)