Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
obiekt typu
stack<pair<directory_iterator, path>>, wywoływanymystacktutaj do celów ekspozycji, który reprezentuje gniazdo katalogów do sekwencjonowaniaobiekt typu
directory_entryo nazwiemyentrytutaj, który reprezentuje bieżącą nazwę pliku w sekwencji katalogówobiekt typu
bool, o nazwieno_pushtutaj, który rejestruje, czy rekursywne zejście do podkatalogów jest wyłączoneobiekt typu
directory_options, o nazwiemyoptionstutaj, 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:
Link katalogu zostanie przeskanowany tylko wtedy, gdy skonstruujesz
recursive_directory_iteratorelement z argumentemdirectory_options, którego wartość todirectory_options::follow_directory_symlink.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++)