Namespaces
Variants

std::experimental::filesystem:: directory_iterator

From cppreference.net
Definiert im Header <experimental/filesystem>
class directory_iterator ;
(Filesystem TS)

directory_iterator ist ein LegacyInputIterator , der über die directory_entry -Elemente eines Verzeichnisses iteriert (jedoch keine Unterverzeichnisse besucht). Die Iterationsreihenfolge ist nicht spezifiziert, außer dass jeder Verzeichniseintrag nur einmal besucht wird. Die speziellen Pfadnamen dot und dot-dot werden übersprungen.

Wenn der directory_iterator über den letzten Verzeichniseintrag hinaus bewegt wird, wird er gleich dem standardmäßig konstruierten Iterator, auch bekannt als End-Iterator. Zwei End-Iteratoren sind immer gleich, das Dereferenzieren oder Inkrementieren des End-Iterators ist undefiniertes Verhalten.

Wenn eine Datei oder ein Verzeichnis nach der Erstellung des Verzeichnis-Iterators aus dem Verzeichnisbaum gelöscht oder hinzugefügt wird, ist es nicht spezifiziert, ob die Änderung durch den Iterator beobachtet wird.

Inhaltsverzeichnis

Mitgliedertypen

Mitgliedtyp Definition
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

Memberfunktionen

Konstruiert einen Directory Iterator
(öffentliche Elementfunktion)
(destructor)
Standard-Destruktor
(öffentliche Elementfunktion)
weist Inhalte zu
(öffentliche Elementfunktion)
greift auf den referenzierten Eintrag zu
(öffentliche Elementfunktion)
wechselt zum nächsten Eintrag
(öffentliche Elementfunktion)

Nicht-Member-Funktionen

Unterstützung für bereichsbasierte for-Schleifen
(Funktion)

Zusätzlich werden operator == und operator ! = bereitgestellt, entweder als Member oder als Non-Member, wie von LegacyInputIterator gefordert.

Beispiel

#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");
}

Mögliche Ausgabe:

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

Siehe auch

Ein Iterator für die Inhalte eines Verzeichnisses und seiner Unterverzeichnisse
(Klasse)
Optionen für die Iteration von Verzeichnisinhalten
(Enumeration)
Ein Verzeichniseintrag
(Klasse)