recursive_directory_iterator — klasa
Opisuje iterator wejściowy, który sekwencjonuje nazwy plików w katalogu, prawdopodobnie malejąco do podkatalogów rekursywnie. W przypadku iteratora X
wyrażenie *X
oblicza obiekt klasy directory_entry
, który opakowuje nazwę pliku i wszystkie znane informacje o jego stanie.
Aby uzyskać więcej informacji i przykłady kodu, zobacz Nawigacja systemu plików (C++).
Składnia
class recursive_directory_iterator;
Uwagi
Szablon klasy przechowuje:
obiekt typu
stack<pair<directory_iterator, path>>
, wywoływanymystack
tutaj do celów ekspozycji, który reprezentuje gniazdo katalogów do sekwencjonowaniaobiekt typu
directory_entry
o nazwiemyentry
tutaj, który reprezentuje bieżącą nazwę pliku w sekwencji katalogówobiekt typu
bool
, o nazwieno_push
tutaj, który rejestruje, czy rekursywne zejście do podkatalogów jest wyłączoneobiekt typu
directory_options
, o nazwiemyoptions
tutaj, który rejestruje opcje ustanowione w budowie
Domyślny skonstruowany obiekt typu recursive_directory_entry
ma iterator końca sekwencji i mystack.top().first
reprezentuje iterator końca sekwencji. Na przykład, biorąc pod uwagę katalog abc
z wpisami def
(katalog), def/ghi
i jkl
, kod:
for (recursive_directory_iterator next(path("abc")), end; next != end; ++next)
visit(next->path());
wywoła wizytę z argumentami path("abc/def/ghi")
i path("abc/jkl")
. Sekwencjonowanie można kwalifikować za pomocą poddrzewa katalogu na dwa sposoby:
Link katalogu zostanie przeskanowany tylko wtedy, gdy skonstruujesz
recursive_directory_iterator
element z argumentemdirectory_options
, którego wartość todirectory_options::follow_directory_symlink
.Jeśli wywołasz
disable_recursion_pending
metodę , kolejny katalog napotkany podczas przyrostu nie będzie rekursywnie skanowany.
Konstruktory
Konstruktor | opis |
---|---|
recursive_directory_iterator | Tworzy element recursive_directory_iterator . |
Funkcje składowe
Funkcja składowa | opis |
---|---|
głębokość | Zwraca wartość mystack.size() - 1 , więc pval jest równa zero głębokości. |
disable_recursion_pending | Sklepy true w programie no_push . |
wzrost | Przechodzi do następnej nazwy pliku w sekwencji. |
Opcje | Zwraca wartość myoptions . |
Pop | Zwraca następny obiekt. |
recursion_pending | Zwraca wartość !no_push . |
Operatory
Operator | opis |
---|---|
operator!= | Zwraca wartość !(*this == right) . |
operator = | Domyślne operatory przypisania składowych zachowują się zgodnie z oczekiwaniami. |
operator== | Zwraca wartość true tylko wtedy, gdy obie *this i prawa są iteratorami końca sekwencji lub obie nie są iteratorami typu end-of-sequence. |
operator* | Zwraca wartość myentry . |
operator-> | Zwraca wartość &**this . |
operator++ | Zwiększa wartość .recursive_directory_iterator |
Wymagania
Header:<filesystem>
Przestrzeń nazw: std::tr2::sys
recursive_directory_iterator::d epth
Zwraca wartość mystack.size() - 1
, więc pval
jest równa zero głębokości.
int depth() const;
recursive_directory_iterator::d isable_recursion_pending
Sklepy true
w programie no_push
.
void disable_recursion_pending();
recursive_directory_iterator::inkrementacja
Przechodzi do następnej nazwy pliku w sekwencji.
recursive_directory_iterator& increment(error_code& ec) noexcept;
Parametry
Ec
Określony kod błędu.
Uwagi
Funkcja próbuje przejść do następnej nazwy pliku w zagnieżdżonej sekwencji. Jeśli to się powiedzie, przechowuje nazwę pliku w myentry
pliku ; w przeciwnym razie tworzy iterator końca sekwencji.
recursive_directory_iterator::operator!=
Zwraca wartość !(*this == right)
.
bool operator!=(const recursive_directory_iterator& right) const;
Parametry
Prawy
Recursive_directory_iterator do porównania.
recursive_directory_iterator::operator=
Domyślne operatory przypisania składowych zachowują się zgodnie z oczekiwaniami.
recursive_directory_iterator& operator=(const recursive_directory_iterator&) = default;
recursive_directory_iterator& operator=(recursive_directory_iterator&&) noexcept = default;
Parametry
recursive_directory_iterator
Recursive_directory_iterator kopiowane do pliku recursive_directory_iterator
.
recursive_directory_iterator::operator==
Zwraca wartość true
tylko wtedy, gdy obie *this
i prawa są iteratorami końca sekwencji lub obie nie są iteratorami typu end-of-sequence.
bool operator==(const recursive_directory_iterator& right) const;
Parametry
Prawy
Recursive_directory_iterator do porównania.
recursive_directory_iterator::operator*
Zwraca wartość myentry
.
const directory_entry& operator*() const;
recursive_directory_iterator::operator—>
Zwraca wartość &**this
.
const directory_entry * operator->() const;
recursive_directory_iterator::operator++
Zwiększa wartość .recursive_directory_iterator
recursive_directory_iterator& operator++();
recursive_directory_iterator& operator++(int);
Parametry
int
Określony przyrost.
Uwagi
Pierwsza funkcja składowa wywołuje metodę increment()
, a następnie zwraca wartość *this
. Druga funkcja składowa tworzy kopię obiektu, wywołuje increment()
metodę , a następnie zwraca kopię.
recursive_directory_iterator::options
Zwraca wartość myoptions
.
directory_options options() const;
recursive_directory_iterator::p op
Zwraca następny obiekt.
void pop();
Uwagi
Jeśli depth() == 0
obiekt stanie się iteratorem końca sekwencji. W przeciwnym razie funkcja składowa kończy skanowanie bieżącego (najgłębszego) katalogu i wznawia działanie w następnej dolnej głębokości.
recursive_directory_iterator::recursion_pending
Zwraca wartość !no_push
.
bool recursion_pending() const;
recursive_directory_iterator::recursive_directory_iterator
Tworzy element 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;
Parametry
pval
Określona ścieżka.
error_code
Określony kod błędu.
Zdecyduje się
Określone opcje katalogu.
recursive_directory_iterator
Element recursive_directory_iterator
, którego konstrukcja recursive_directory_iterator
ma być kopią.
Uwagi
Pierwszy konstruktor tworzy iterator końca sekwencji. Drugie i trzecie konstruktory przechowują false
w systemach i directory_options::none
w no_push
myoptions
pliku , a następnie próbują otworzyć i odczytać pval jako katalog. W przypadku pomyślnego zainicjowania mystack
i myentry
wyznaczenia pierwszej nazwy pliku innej niż katalog w zagnieżdżonej sekwencji; w przeciwnym razie tworzą iterator końca sekwencji.
Czwarte i piąte konstruktory zachowują się tak samo jak drugi i trzeci, z tą różnicą, że pierwszy sklep decyduje się na myoptions
. Domyślny konstruktor zachowuje się zgodnie z oczekiwaniami.
Zobacz też
Odwołanie do plików nagłówka
<system plików>
Nawigacja systemu plików (C++)