recursive_directory_iterator-Klasse
Beschreibt einen Eingabe-Iterator, der durch die Dateinamen in einem Verzeichnis sequenziert wird und möglicherweise rekursiv in Unterverzeichnisse absteigend ist. 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.
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 aufgerufenmystack
wird, die das Verschachteln von Verzeichnissen darstellt, die sequenziert werden sollenein Hier aufgerufenes
myentry
Objekt 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/ghi
und jkl
dem 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_iterator
directory_options
Argument 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_iterator
Datei 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 myoptions
den Store anmelden. Der Standardkonstruktor verhält sich wie erwartet.
Siehe auch
Headerdateienreferenz
<filesystem>
Dateisystemnavigation (C++)