Namespaces
Variants

std::experimental::filesystem:: directory_iterator

From cppreference.net
Défini dans l'en-tête <experimental/filesystem>
class directory_iterator ;
(filesystem TS)

directory_iterator est un LegacyInputIterator qui itère sur les éléments directory_entry d'un répertoire (mais ne visite pas les sous-répertoires). L'ordre d'itération n'est pas spécifié, sauf que chaque entrée de répertoire n'est visitée qu'une seule fois. Les noms de chemin spéciaux dot et dot-dot sont ignorés.

Si le directory_iterator est avancé au-delà de la dernière entrée de répertoire, il devient égal à l'itérateur construit par défaut, également appelé itérateur de fin. Deux itérateurs de fin sont toujours égaux, déréférencer ou incrémenter l'itérateur de fin est un comportement indéfini.

Si un fichier ou un répertoire est supprimé ou ajouté à l'arborescence de répertoires après la création de l'itérateur de répertoire, il n'est pas spécifié si le changement serait observé via l'itérateur.

Table des matières

Types membres

Type de membre Définition
value_type filesystem::directory_entry
difference_type std::ptrdiff_t
pointer const filesystem::directory_entry*
reference const filesystem::directory_entry&
iterator_category std::input_iterator_tag

Fonctions membres

construit un itérateur de répertoire
(fonction membre publique)
(destructor)
destructeur par défaut
(fonction membre publique)
assigne le contenu
(fonction membre publique)
accède à l'entrée pointée
(fonction membre publique)
avance à l'entrée suivante
(fonction membre publique)

Fonctions non membres

prise en charge de la boucle for basée sur des plages
(fonction)

De plus, operator == et operator ! = sont fournis, soit en tant que membres soit en tant que non-membres, comme requis par LegacyInputIterator .

Exemple

#include <experimental/filesystem>
#include <fstream>
#include <iostream>
namespace fs = std::experimental::filesystem;
int main()
{
    fs::create_directories("sandbox/a/b");
    std::ofstream{"sandbox/file1.txt"};
    std::ofstream{"sandbox/file2.txt"};
    for (const fs::directory_entry& entry : fs::directory_iterator{"sandbox"})
        std::cout << entry << '\n';
    fs::remove_all("sandbox");
}

Sortie possible :

"sandbox/a"
"sandbox/file1.txt"
"sandbox/file2.txt"

Voir aussi

un itérateur vers le contenu d'un répertoire et de ses sous-répertoires
(classe)
options pour l'itération du contenu des répertoires
(énumération)
une entrée de répertoire
(classe)