Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Popisuje vstupní iterátor, který sekvencuje názvy souborů v adresáři, případně sestupně do podadresářů rekurzivně. V případě iterátoru Xse výraz *X vyhodnotí jako objekt třídy directory_entry , který zabalí název souboru a cokoli, co je známo o jeho stavu.
Další informace a příklady kódu najdete v tématu Navigace v systému souborů (C++).
Syntaxe
class recursive_directory_iterator;
Poznámky
Šablona třídy ukládá:
objekt typu
stack<pair<directory_iterator, path>>, volanýmystackzde pro účely expozice, který představuje vnoření adresářů, které mají být sekvencoványobjekt typu
directory_entryvolanýmyentryzde, který představuje aktuální název souboru v sekvenci adresářůobjekt typu
bool, který zde voláno_push, který zaznamenává, zda rekurzivní sestup do podadresářů je zakázánobjekt typu
directory_options, který zde volalmyoptions, který zaznamenává možnosti stanovené při konstrukci
Výchozí vytvořený objekt typu recursive_directory_entry má iterátor mystack.top().first konce sekvence a představuje iterátor konce sekvence. Například vzhledem k adresáři abc s položkami def (adresář) def/ghia jklkódu:
for (recursive_directory_iterator next(path("abc")), end; next != end; ++next)
visit(next->path());
zavolá návštěvu s argumenty path("abc/def/ghi") a path("abc/jkl"). Sekvencování můžete provést prostřednictvím podstromu adresáře dvěma způsoby:
Symlink adresáře bude zkontrolován pouze v případě, že vytvoříte
recursive_directory_iterators argumentemdirectory_options, jehož hodnota jedirectory_options::follow_directory_symlink.Pokud zavoláte
disable_recursion_pending, další adresář, ke kterému došlo během přírůstku, se rekurzivně neprokontroluje.
Konstruktory
| Konstruktor | Popis |
|---|---|
| recursive_directory_iterator | Vytvoří .recursive_directory_iterator |
Členské funkce
| Členová funkce | Popis |
|---|---|
| hloubka | Vrátí mystack.size() - 1hodnotu , takže pval je v hloubkové nule. |
| disable_recursion_pending | Obchody true v no_push. |
| přírůstek | Přejde na další název souboru v posloupnosti. |
| volby | Vrací objekt myoptions. |
| bouchnout | Vrátí další objekt. |
| recursion_pending | Vrací objekt !no_push. |
Operátory
| Operátor | Popis |
|---|---|
| operator!= | Vrací objekt !(*this == right). |
| operator= | Výchozí operátory přiřazení členů se chovají podle očekávání. |
| operator== | Vrátí pouze true v případě, že oba *this a pravé jsou iterátory konce sekvence nebo oba nejsou end-of-sequence-iterátory. |
| operátor* | Vrací objekt myentry. |
| operátor-> | Vrací objekt &**this. |
| operator++ | Zvýší recursive_directory_iteratorhodnotu . |
Požadavky
Header:<filesystem>
Obor názvů: std::tr2::sys
recursive_directory_iterator::d epth
Vrátí mystack.size() - 1hodnotu , takže pval je v hloubkové nule.
int depth() const;
recursive_directory_iterator::d isable_recursion_pending
Obchody true v no_push.
void disable_recursion_pending();
recursive_directory_iterator::increment
Přejde na další název souboru v posloupnosti.
recursive_directory_iterator& increment(error_code& ec) noexcept;
Parametry
es
Zadaný kód chyby.
Poznámky
Funkce se pokusí přejít na další název souboru v vnořené sekvenci. V případě úspěchu uloží tento název souboru myentry. Jinak vytvoří iterátor konce sekvence.
recursive_directory_iterator::operator!=
Vrací objekt !(*this == right).
bool operator!=(const recursive_directory_iterator& right) const;
Parametry
Vpravo
Recursive_directory_iterator pro porovnání.
recursive_directory_iterator::operator=
Výchozí operátory přiřazení členů se chovají podle očekávání.
recursive_directory_iterator& operator=(const recursive_directory_iterator&) = default;
recursive_directory_iterator& operator=(recursive_directory_iterator&&) noexcept = default;
Parametry
recursive_directory_iterator
Zkopírovaný recursive_directory_iterator do souboru recursive_directory_iterator.
recursive_directory_iterator::operator==
Vrátí pouze true v případě, že oba *this a pravé jsou iterátory konce sekvence nebo oba nejsou end-of-sequence-iterátory.
bool operator==(const recursive_directory_iterator& right) const;
Parametry
Vpravo
Recursive_directory_iterator pro porovnání.
recursive_directory_iterator::operator*
Vrací objekt myentry.
const directory_entry& operator*() const;
recursive_directory_iterator::operator->
Vrací objekt &**this.
const directory_entry * operator->() const;
recursive_directory_iterator::operator++
Zvýší recursive_directory_iteratorhodnotu .
recursive_directory_iterator& operator++();
recursive_directory_iterator& operator++(int);
Parametry
int
Zadaný přírůstek.
Poznámky
První volání increment()členské funkce a poté vrátí *this. Druhá členová funkce vytvoří kopii objektu, volání increment()a poté vrátí kopii.
recursive_directory_iterator::options
Vrací objekt myoptions.
directory_options options() const;
recursive_directory_iterator::p op
Vrátí další objekt.
void pop();
Poznámky
Pokud depth() == 0 se objekt stane iterátorem konce sekvence. V opačném případě členová funkce ukončí kontrolu aktuálního (nejnižšího) adresáře a obnoví se v další nižší hloubkě.
recursive_directory_iterator::recursion_pending
Vrací objekt !no_push.
bool recursion_pending() const;
recursive_directory_iterator::recursive_directory_iterator
Vytvoří .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
Zadaná cesta.
error_code
Zadaný kód chyby.
Rozhodne
Zadané možnosti adresáře.
recursive_directory_iterator
Z recursive_directory_iterator nichž vytvořený recursive_directory_iterator má být kopií.
Poznámky
První konstruktor vytvoří iterátor konce sekvence. Druhý a třetí konstruktory se ukládají false do no_push a directory_options::none v myoptions, pak se pokusí otevřít a číst pval jako adresář. V případě úspěchu inicializují mystack a myentry určí první název souboru jiného adresáře v vnořené sekvenci, jinak vytvoří iterátor konce sekvence.
Čtvrtý a pátý konstruktory se chovají stejně jako druhý a třetí, s tím rozdílem, že první ukládají výslovný souhlas myoptions. Výchozí konstruktor se chová podle očekávání.
Viz také
Referenční informace k souborům hlaviček
<systém souborů>
Navigace v systému souborů (C++)