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.
Beschreibt einen Eingabe-Iterator, der durch die Dateinamen in einem Verzeichnis sequenziert wird und möglicherweise rekursiv in Unterverzeichnisse absteigend ist. 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.
Weitere Informationen und Codebeispiele finden Sie unter File System Navigation (C++) (Dateisystemnavigation (C++)).
Syntax
class recursive_directory_iterator;
Hinweise
Die Klassenvorlage speichert:
ein Objekt vom Typ
stack<pair<directory_iterator, path>>, das hier für die Zwecke der Exposition aufgerufenmystackwird, die das Verschachteln von Verzeichnissen darstellt, die sequenziert werden sollenein Hier aufgerufenes
myentryObjekt des Typsdirectory_entry, das den aktuellen Dateinamen in der Verzeichnissequenz darstelltein Objekt vom Typ
bool, das hier aufgerufen wirdno_push, wobei erfasst wird, ob rekursive Abstieg in Unterverzeichnisse deaktiviert ist.ein Objekt vom Typ
directory_options, das hier genannt wirdmyoptions, welche die bei der Konstruktion festgelegten Optionen aufzeichnet
Ein vom Typ recursive_directory_entry erstelltes Standardobjekt verfügt über mystack.top().first einen Iterator für die Endsequenz und stellt den End-of-Sequence-Iterator dar. Beispielsweise, wenn das Verzeichnis abc mit Einträgen def (einem Verzeichnis) def/ghiund jkldem Code:
for (recursive_directory_iterator next(path("abc")), end; next != end; ++next)
visit(next->path());
aufruft den Besuch mit den Argumenten path("abc/def/ghi") und path("abc/jkl"). Sie können die Sequenzierung über eine Verzeichnisunterstruktur auf zwei Arten qualifizieren:
Ein Verzeichnis symlink wird nur dann gescannt, wenn Sie ein
recursive_directory_iteratordirectory_optionsArgument erstellen, dessen Wert lautetdirectory_options::follow_directory_symlink.Wenn Sie aufrufen
disable_recursion_pending, wird ein nachfolgendes Verzeichnis, das während eines Inkrements aufgetreten ist, nicht rekursiv gescannt.
Konstruktoren
| Konstruktor | Beschreibung |
|---|---|
| recursive_directory_iterator | Erstellt ein Objekt vom Typ recursive_directory_iterator. |
Memberfunktionen
| Memberfunktion | Beschreibung |
|---|---|
| depth | Gibt zurück mystack.size() - 1, also pval bei der Tiefe Null. |
| disable_recursion_pending | Stores true in no_push. |
| increment | Wechselt nacheinander zum nächsten Dateinamen. |
| Optionen | Gibt myoptions zurück. |
| pop | Gibt das nächste Objekt zurück. |
| recursion_pending | Gibt !no_push zurück. |
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 rechte End-of-Sequence-Iteratoren oder beide nicht End-of-Sequence-Iteratoren sind. |
| operator* | Gibt myentry zurück. |
| operator-> | Gibt &**this zurück. |
| operator++ | Erhöht die recursive_directory_iterator. |
Anforderungen
Header:<filesystem>
Namespace: std::tr2::sys
recursive_directory_iterator::depth
Gibt zurück mystack.size() - 1, also pval bei der Tiefe Null.
int depth() const;
recursive_directory_iterator::disable_recursion_pending
Stores true in no_push.
void disable_recursion_pending();
recursive_directory_iterator::increment
Wechselt nacheinander zum nächsten Dateinamen.
recursive_directory_iterator& increment(error_code& ec) noexcept;
Parameter
EG
Angegebener Fehlercode.
Hinweise
Die Funktion versucht, zum nächsten Dateinamen in der geschachtelten Sequenz zu gelangen. Bei erfolgreicher Ausführung speichert sie diesen Dateinamen in myentry; andernfalls wird ein Iterator für die Endsequenz erzeugt.
recursive_directory_iterator::operator!=
Gibt !(*this == right) zurück.
bool operator!=(const recursive_directory_iterator& right) const;
Parameter
right
Die recursive_directory_iterator zum Vergleich.
recursive_directory_iterator::operator=
Die als Standard festgelegten Memberzuweisungsoperatoren verhalten sich wie erwartet.
recursive_directory_iterator& operator=(const recursive_directory_iterator&) = default;
recursive_directory_iterator& operator=(recursive_directory_iterator&&) noexcept = default;
Parameter
recursive_directory_iterator
Die recursive_directory_iterator , die in die recursive_directory_iteratorDatei kopiert werden.
recursive_directory_iterator::operator==
Gibt nur zurück true , wenn beide *this und rechte End-of-Sequence-Iteratoren oder beide nicht End-of-Sequence-Iteratoren sind.
bool operator==(const recursive_directory_iterator& right) const;
Parameter
right
Die recursive_directory_iterator zum Vergleich.
recursive_directory_iterator::operator*
Gibt myentry zurück.
const directory_entry& operator*() const;
recursive_directory_iterator::operator->
Gibt &**this zurück.
const directory_entry * operator->() const;
recursive_directory_iterator::operator++
Erhöht die recursive_directory_iterator.
recursive_directory_iterator& operator++();
recursive_directory_iterator& operator++(int);
Parameter
int
Die angegebene Inkrementierung.
Hinweise
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.
recursive_directory_iterator::options
Gibt myoptions zurück.
directory_options options() const;
recursive_directory_iterator::pop
Gibt das nächste Objekt zurück.
void pop();
Hinweise
Wenn depth() == 0 das Objekt zu einem End-of-Sequence-Iterator wird. Andernfalls beendet die Memberfunktion das Durchsuchen des aktuellen (tiefsten) Verzeichnisses und setzt das Durchsuchen auf der nächstniedrigeren Tiefe fort.
recursive_directory_iterator::recursion_pending
Gibt !no_push zurück.
bool recursion_pending() const;
recursive_directory_iterator::recursive_directory_iterator
Erstellt ein Objekt vom Typ recursive_directory_iterator.
recursive_directory_iterator() noexcept;
explicit recursive_directory_iterator(const path& pval);
recursive_directory_iterator(const path& pval,
error_code& ec) noexcept;
recursive_directory_iterator(const path& pval,
directory_options opts);
recursive_directory_iterator(const path& pval,
directory_options opts,
error_code& ec) noexcept;
recursive_directory_iterator(const recursive_directory_iterator&) = default;
recursive_directory_iterator(recursive_directory_iterator&&) noexcept = default;
Parameter
pval
Der angegebene Pfad.
error_code
Der angegebene Fehlercode.
Setzt
Die angegebenen Verzeichnisoptionen.
recursive_directory_iterator
Das recursive_directory_iterator-Element, von dem das erstellte recursive_directory_iterator-Element eine Kopie sein soll.
Hinweise
Der erste Konstruktor erzeugt einen Sequenzende-Iterator. Die zweiten und dritten Konstruktoren speichern false in no_push und directory_options::none in myoptions, und versuchen Sie dann, Pval als Verzeichnis zu öffnen und zu lesen. Bei erfolgreicher Ausführung initialisieren mystack myentry sie den ersten Nicht-Verzeichnisdateinamen in der geschachtelten Sequenz und erzeugen andernfalls einen Iterator für die Endsequenz.
Die vierten und fünften Konstruktoren verhalten sich genauso wie der zweite und dritte, mit der Ausnahme, dass sie sich zuerst für myoptionsden Store anmelden. Der Standardkonstruktor verhält sich wie erwartet.
Siehe auch
Headerdateienreferenz
<filesystem>
Dateisystemnavigation (C++)