std::experimental::filesystem::directory_iterator
| Definiert im Header <experimental/filesystem> |
||
| class directory_iterator; |
(Dateisystem-TS) | |
directory_iterator ist ein LegacyInputIterator, der über die directory_entry-Elemente eines Verzeichnisses iteriert (besucht aber nicht die Unterverzeichnisse). Die Iterationsreihenfolge ist nicht spezifiziert, mit der Ausnahme, 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 fortgeschritten wird, wird er gleich dem standardkonstruierten 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 Verzeichnisiterators aus dem Verzeichnisbaum gelöscht oder hinzugefügt wird, ist es nicht spezifiziert, ob die Änderung über den Iterator beobachtet wird.
Inhalt |
[bearbeiten] Membertypen
| Mitgliedertyp | Definition |
value_type
|
filesystem::directory_entry
|
difference_type
|
std::ptrdiff_t
|
Zeiger
|
const filesystem::directory_entry*
|
Referenz
|
const filesystem::directory_entry&
|
iterator_category
|
std::input_iterator_tag
|
[bearbeiten] Memberfunktionen
| konstruiert einen Verzeichnisiterator (public member function) | |
| (Destruktor) |
standardmäßiger Destruktor (public member function) |
| weist Inhalte zu (public member function) | |
| greift auf den Zeigereintrag zu (public member function) | |
| bewegt sich zum nächsten Eintrag (public member function) |
[bearbeiten] Nicht-Member-Funktionen
| Unterstützung für range-basierte for-Schleifen (function) |
Zusätzlich werden operator== und operator!= bereitgestellt, entweder als Member oder als Nicht-Member, wie von LegacyInputIterator gefordert.
[bearbeiten] 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"
[bearbeiten] Siehe auch
| ein Iterator für den Inhalt eines Verzeichnisses und seiner Unterverzeichnisse (Klasse) | |
| Optionen für das Iterieren über Verzeichnisinhalte (Aufzählung) | |
| ein Verzeichniseintrag (Klasse) |