Udostępnij za pośrednictwem


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 Xwyraż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:

  1. obiekt typu stack<pair<directory_iterator, path>>, wywoływany mystack tutaj do celów ekspozycji, który reprezentuje gniazdo katalogów do sekwencjonowania

  2. obiekt typu directory_entry o nazwie myentry tutaj, który reprezentuje bieżącą nazwę pliku w sekwencji katalogów

  3. obiekt typu bool, o nazwie no_push tutaj, który rejestruje, czy rekursywne zejście do podkatalogów jest wyłączone

  4. obiekt typu directory_options, o nazwie myoptions 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/ghii 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:

  1. Link katalogu zostanie przeskanowany tylko wtedy, gdy skonstruujesz recursive_directory_iterator element z argumentem directory_options , którego wartość to directory_options::follow_directory_symlink.

  2. Jeśli wywołasz disable_recursion_pendingmetodę , 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 myentrypliku ; 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 myoptionspliku , 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++)