recursive_directory_iterator – třída
Popisuje vstupní iterátor, který sekvencuje názvy souborů v adresáři, případně sestupně do podadresářů rekurzivně. V případě iterátoru X
se 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ýmystack
zde pro účely expozice, který představuje vnoření adresářů, které mají být sekvencoványobjekt typu
directory_entry
volanýmyentry
zde, 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/ghi
a jkl
kó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_iterator
s 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() - 1 hodnotu , 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_iterator hodnotu . |
Požadavky
Header:<filesystem>
Obor názvů: std::tr2::sys
recursive_directory_iterator::d epth
Vrátí mystack.size() - 1
hodnotu , 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_iterator
hodnotu .
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++)