std::experimental::filesystem:: directory_iterator
|
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) |