Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Important
Auf dieser Seite wird die directory_iterator Klasse aus der vorstandardlichen <experimental/filesystem> Implementierung der technischen SPEZIFIKATION (ISO C++Filesystem Technical Specification, N4100) beschrieben. Diese API ist nicht identisch mit der C++17-Klasse directory_iterator in <filesystem>. Es verwendet verschiedene Signaturen, einschließlich einer schmaleren Gruppe von Konstruktoren, die keine directory_options Überladung haben. Die experimentelle Implementierung wurde ab dem Toolset Microsoft Visual C++ (MSVC) 14.51 entfernt. Neuer Code sollte stattdessen die C++17-Klasse directory_iterator verwenden.
Beschreibt einen Eingabe-Iterator, der durch die Dateinamen in einem Verzeichnis sequenziert wird. Bei einem Iterator Xwertet 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 ghidem 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").
Syntax
class directory_iterator;
Constructors
| Konstruktor | Description |
|---|---|
directory_iterator |
Erstellt einen Eingabe-Iterator, der durch die Dateinamen in einem Verzeichnis sequenziert wird. |
Memberfunktionen
| Memberfunktion | Description |
|---|---|
increment |
Versucht, zum nächsten Dateinamen im Verzeichnis zu wechseln. |
Betriebspersonal
| Operator | Description |
|---|---|
operator!= |
Gibt !(*this == right) zurück. |
operator= |
Die standardmäßigen Memberzuweisungsoperatoren verhalten sich erwartungsgemäß. |
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 *thisdann eine Kopie des Objekts zurück oder erstellt eine Kopie des Objekts, ruft increment()und gibt dann die Kopie zurück. |
Anforderungen
Kopfball:<experimental/filesystem>
Namespace:std::experimental::filesystem
directory_iterator::directory_iterator
Der erste Konstruktor erzeugt einen End-of-Sequence-Iterator. Die Konstruktoren, die ein pval Argument verwenden, speichern sie in mydir, und versuchen Sie dann, es 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. Die Überladung, die ein ec Argument verwendet, meldet Fehler ec , anstatt eine Ausnahme zu auslösen. Die Kopier- und Verschiebungskonstruktoren verhalten 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&&) = 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 wechseln. Wenn die Datei erfolgreich verläuft, wird dieser Dateiname in myentry; andernfalls wird ein Iterator für die Endsequenz erzeugt.
directory_iterator& increment(error_code& ec) noexcept;
Parameter
ec
Der Statusfehlercode.
directory_iterator::operator!=
Der Operator gibt zurück !(*this == right).
bool operator!=(const directory_iterator& right) const;
Parameter
right
Der directory_iterator Vergleich mit dem directory_iterator.
directory_iterator::operator=
Die standardmäßigen Memberzuweisungsoperatoren verhalten sich erwartungsgemäß.
directory_iterator& operator=(const directory_iterator&) = default;
directory_iterator& operator=(directory_iterator&&) = default;
Parameter
right
Das directory_iterator kopierte In das directory_iterator.
directory_iterator::operator==
Der Operator 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
Der directory_iterator Vergleich mit dem directory_iterator.
directory_iterator::operator*
Der Memberoperator gibt zurück myentry.
const directory_entry& operator*() const;
directory_iterator::operator->
Die Memberfunktion gibt zurück &**this.
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
Dummy-Argument. Es ist eine C++-Konvention, die nur verwendet wird, um den Postfix-Inkrementoperator vom Präfix-Inkrementoperator zu unterscheiden. Der C++-Standard erfordert, dass das Postfix-Formular einen Dummy-Int-Parameter verwendet.