directory_iterator
-Klasse
Beschreibt einen Eingabeiterator, der alle Dateinamen in einem Verzeichnis durchläuft. Bei einem Iterator X
wertet der Ausdruck *X
ein Objekt der Klasse directory_entry
aus, das den Dateinamen umschließt, und alles, was über seinen Status bekannt ist.
Die Klasse speichert ein Objekt vom Typ path
, das hier für die Zwecke der Exposition aufgerufen mydir
wird, die den Namen des zu sequenzierenden Verzeichnisses darstellt, und ein Objekt vom Typ hier directory_entry
aufgerufen myentry
, das den aktuellen Dateinamen in der Verzeichnissequenz darstellt. Ein vom Typ directory_entry
erstelltes Standardobjekt weist einen leeren mydir
Pfadnamen auf und stellt den Iterator für die Endsequenz dar.
Beispielsweise, wenn das Verzeichnis abc
mit Einträgen def
und ghi
dem Code:
for (directory_iterator next(path("abc")), end; next != end; ++next) visit(next->path());
Aufrufe visit
mit den Argumenten path("abc/def")
und path("abc/ghi")
.
Weitere Informationen und Codebeispiele finden Sie unter File System Navigation (C++) (Dateisystemnavigation (C++)).
Syntax
class directory_iterator;
Konstruktoren
Konstruktor | Beschreibung |
---|---|
directory_iterator |
Erstellt einen Eingabe-Iterator, der durch die Dateinamen in einem Verzeichnis sequenziert wird. |
Memberfunktionen
Memberfunktion | Beschreibung |
---|---|
increment |
Versucht, zum nächsten Dateinamen im Verzeichnis zu wechseln. |
Operatoren
Operator | Beschreibung |
---|---|
operator!= |
Gibt !(*this == right) zurück. |
operator= |
Die als Standard festgelegten Memberzuweisungsoperatoren verhalten sich wie erwartet. |
operator== |
Gibt nur zurück true , wenn beide *this und right End-of-Sequence-Iteratoren oder beide nicht End-of-Sequence-Iteratoren sind. |
operator* |
Gibt myentry zurück. |
operator-> |
Gibt &**this zurück. |
operator++ |
Ruft increment() auf, gibt *this dann eine Kopie des Objekts zurück oder erstellt eine Kopie des Objekts, ruft increment() und gibt dann die Kopie zurück. |
Anforderungen
Header: <filesystem>
Namespace:std::filesystem
directory_iterator::directory_iterator
Der erste Konstruktor erzeugt einen Sequenzende-Iterator. Der zweite und dritte Konstruktor speichern pval
in mydir
, und versuchen Sie dann, als Verzeichnis zu öffnen und zu lesen mydir
. Bei erfolgreicher Ausführung speichern sie den ersten Dateinamen im Verzeichnis in myentry
; andernfalls erzeugen sie einen Iterator für die Endsequenz.
Der Standardkonstruktor verhält sich wie erwartet.
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&&) noexcept = default;
Parameter
pval
Der gespeicherte Dateinamepfad.
ec
Der Statusfehlercode.
directory_iterator
Das gespeicherte Objekt.
directory_iterator::increment
Die Funktion versucht, zum nächsten Dateinamen im Verzeichnis zu gelangen. Bei erfolgreicher Ausführung speichert sie diesen Dateinamen in myentry
; andernfalls wird ein Iterator für die Endsequenz erzeugt.
directory_iterator& increment(error_code& ec) noexcept;
directory_iterator::operator!=
Der Memberoperator gibt !(*this == right)
zurück.
bool operator!=(const directory_iterator& right) const;
Parameter
right
Der directory_iterator
Vergleich mit dem directory_iterator
.
directory_iterator::operator=
Die als Standard festgelegten Memberzuweisungsoperatoren verhalten sich wie erwartet.
directory_iterator& operator=(const directory_iterator&) = default;
directory_iterator& operator=(directory_iterator&&) noexcept = default;
Parameter
right
Das directory_iterator
kopierte In das directory_iterator
.
directory_iterator::operator==
Der Memberoperator gibt nur zurück true
, wenn beide *this
und right
End-of-Sequence-Iteratoren oder beide nicht End-of-Sequence-Iteratoren sind.
bool operator==(const directory_iterator& right) const;
Parameter
right
Die directory_iterator verglichen mit dem directory_iterator
.
directory_iterator::operator*
Der Memberoperator gibt myentry
zurück.
const directory_entry& operator*() const;
directory_iterator::operator->
Die Memberfunktion gibt &**this
zurück.
const directory_entry * operator->() const;
directory_iterator::operator++
Die erste Memberfunktion ruft increment()
die Funktion auf und gibt dann zurück *this
. Die zweite Memberfunktion erstellt eine Kopie des Objekts, ruft increment()
auf und gibt dann die Kopie zurück.
directory_iterator& operator++();
directory_iterator& operator++(int);
Parameter
int
Die Anzahl der Inkremente.
Siehe auch
<filesystem>
Headerdateienreferenz
Dateisystemnavigation (C++)