Namensräume
Varianten
Aktionen

std::experimental::filesystem::directory_iterator

Von cppreference.com
< cpp‎ | experimental‎ | fs
 
 
 
 
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) [bearbeiten]
(Destruktor)
standardmäßiger Destruktor
(public member function) [bearbeiten]
weist Inhalte zu
(public member function) [bearbeiten]
greift auf den Zeigereintrag zu
(public member function) [bearbeiten]
bewegt sich zum nächsten Eintrag
(public member function) [bearbeiten]

[bearbeiten] Nicht-Member-Funktionen

Unterstützung für range-basierte for-Schleifen
(function) [bearbeiten]

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) [bearbeiten]
Optionen für das Iterieren über Verzeichnisinhalte
(Aufzählung) [bearbeiten]
ein Verzeichniseintrag
(Klasse) [bearbeiten]