<experimental/filesystem> directory_iterator classe

Important

Cette page décrit la directory_iterator classe de l’implémentation préstandarde <experimental/filesystem> de la spécification technique du système de fichiers ISO C++ (N4100). Cette API n’est pas la même que la classe C++17 directory_iterator dans <filesystem>. Il utilise différentes signatures, y compris un ensemble plus étroit de constructeurs qui n’ont aucune directory_options surcharge. L’implémentation expérimentale a été supprimée à partir de l’ensemble d’outils Microsoft Visual C++ (MSVC) 14.51. Le nouveau code doit utiliser la classe C++17 directory_iterator à la place.

Décrit un itérateur d’entrée qui séquence les noms de fichiers dans un répertoire. 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.

La classe stocke un objet de type path, appelé mydir ici à des fins d’exposition, qui représente le nom du répertoire à séquencer, et un objet de type directory_entry appelé myentry ici, qui représente le nom de fichier actuel dans la séquence d’annuaires. Un objet construit par défaut de type directory_entry a un chemin d’accès vide mydir et représente l’itérateur de fin de séquence.

Par exemple, étant donné le répertoire abc avec des entrées def et ghi, le code :

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

appels visit avec les arguments path("abc/def") et path("abc/ghi").

Syntax

class directory_iterator;

Constructors

Constructor Description
directory_iterator Construit un itérateur d’entrée qui séquence les noms de fichiers dans un répertoire.

Fonctions Membre

Fonction membre Description
increment Tente d’accéder au nom de fichier suivant dans le répertoire.

Operators

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 *this itérateurs right de fin de séquence ou les deux ne sont pas des itérateurs de fin de séquence.
operator* Retourne myentry.
operator-> Retourne &**this.
operator++ Appels increment(), puis retourne *this, ou effectue une copie de l’objet, appelle increment(), puis retourne la copie.

Spécifications

En-tête :<experimental/filesystem>

Noms:std::experimental::filesystem

directory_iterator::directory_iterator

Le premier constructeur produit un itérateur de fin de séquence. Les constructeurs qui acceptent un pval argument le stockent mydir, puis tentent d’ouvrir et de lire mydir en tant que répertoire. En cas de réussite, ils stockent le premier nom de fichier dans le répertoire myentry; sinon, ils produisent un itérateur de fin de séquence. La surcharge qui prend un ec argument signale des erreurs au ec lieu de lever une exception. Les constructeurs de copie et de déplacement se comportent comme prévu.

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
Chemin d’accès du nom de fichier stocké.

ec
Code d’erreur d’état.

directory_iterator
Objet stocké.

directory_iterator::increment

La fonction tente d’atteindre le nom de fichier suivant dans le répertoire. En cas de réussite, il stocke ce nom de fichier dans myentry; sinon, il produit un itérateur de fin de séquence.

directory_iterator& increment(error_code& ec) noexcept;

Parameters

ec
Code d’erreur d’état.

directory_iterator::operator!=

L’opérateur retourne !(*this == right).

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

Parameters

right
L’être directory_iterator comparé au directory_iterator.

directory_iterator::operator=

Les opérateurs d’affectation de membre par défaut se comportent comme prévu.

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

Parameters

right
En directory_iterator cours de copie dans le directory_iterator.

directory_iterator::operator==

L’opérateur retourne true uniquement si les deux *this et right sont des itérateurs de fin de séquence ou les deux ne sont pas des itérateurs de bout en bout.

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

Parameters

right
L’être directory_iterator comparé au directory_iterator.

directory_iterator::operator*

L’opérateur membre retourne myentry.

const directory_entry& operator*() const;

directory_iterator::operator->

La fonction membre retourne &**this.

const directory_entry * operator->() const;

directory_iterator::operator++

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.

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

Parameters

int
Argument factice. Il s’agit d’une convention C++ utilisée uniquement pour distinguer l’opérateur d’incrément postfix de l’opérateur d’incrément de préfixe. La norme C++ nécessite que le formulaire postfix prenne un paramètre int factice.

Voir aussi

<experimental/filesystem>
class directory_entry