Sdílet prostřednictvím


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 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á:

  1. objekt typu stack<pair<directory_iterator, path>>, volaný mystack zde pro účely expozice, který představuje vnoření adresářů, které mají být sekvencovány

  2. objekt typu directory_entry volaný myentry zde, který představuje aktuální název souboru v sekvenci adresářů

  3. objekt typu bool, který zde volá no_push , který zaznamenává, zda rekurzivní sestup do podadresářů je zakázán

  4. objekt typu directory_options, který zde volal myoptions , 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:

  1. Symlink adresáře bude zkontrolován pouze v případě, že vytvoříte recursive_directory_iterator s argumentem directory_options , jehož hodnota je directory_options::follow_directory_symlink.

  2. 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++)