Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Beskriver en indata iterator som sekvenserar genom filnamnen i en katalog, eventuellt fallande till underkataloger rekursivt. För en iterator Xutvärderas uttrycket *X till ett objekt av klassen directory_entry som omsluter filnamnet och allt som är känt om dess status.
Mer information och kodexempel finns i Filsystemnavigering (C++).
Syntax
class recursive_directory_iterator;
Kommentarer
Klassmallen lagrar:
ett objekt av typen
stack<pair<directory_iterator, path>>, som anropasmystackhär för exposition, som representerar kapslingen av kataloger som ska sekvenserasett objekt av typen
directory_entrysom hetermyentryhär, vilket representerar det aktuella filnamnet i katalogsekvensenett objekt av typen
bool, som anropasno_pushhär, som registrerar om rekursiv nedstigning i underkataloger är inaktiveratett objekt av typen
directory_options, som kallasmyoptionshär, som registrerar de alternativ som har upprättats vid konstruktionen
Ett standardkonstruerat objekt av typen recursive_directory_iterator har en iterator i slutet av sekvensen vid mystack.top().first och representerar iteratorn i slutet av sekvensen. Till exempel med hjälp av katalogen abc med poster def (en katalog), def/ghi, och jkl, koden:
for (recursive_directory_iterator next(path("abc")), end; next != end; ++next)
visit(next->path());
anropar besök med argumenten path("abc/def/ghi") och path("abc/jkl"). Du kan kvalificera sekvensering via ett katalogunderträd på två sätt:
En katalogsymlänk genomsöks endast om du skapar en
recursive_directory_iteratormed ettdirectory_optionsargument vars värde ärdirectory_options::follow_directory_symlink.Om du anropar
disable_recursion_pendinggenomsöks inte en efterföljande katalog som påträffades under en ökning rekursivt.
Constructors
| Constructor | Beskrivning |
|---|---|
| recursive_directory_iterator | Konstruerar en recursive_directory_iterator. |
Medlemsfunktioner
| Medlemsfunktion | Beskrivning |
|---|---|
| djup | Returnerar mystack.size() - 1, så pval är på djup noll. |
| disable_recursion_pending | Lagrar true i no_push. |
| increment | Går vidare till nästa filnamn i följd. |
| alternativ | Returnerar myoptions. |
| pop | Flyttar iteratorn till nästa post på nästa lägre djup. |
| recursion_pending | Returnerar !no_push. |
Operators
| Operator | Beskrivning |
|---|---|
| operator!= | Returnerar !(*this == right). |
| operator= | Standardoperatorerna för medlemstilldelning fungerar som förväntat. |
| operator== | Returnerar true endast om både *this och höger är iteratorer i slutet av sekvensen eller båda inte är end-of-sequence-iteratorer. |
| operator* | Returnerar myentry. |
| operator-> | Returnerar &**this. |
| operator++ |
recursive_directory_iteratorÖkar . |
Requirements
rubrik:<filesystem>
Namnområde:std::filesystem
recursive_directory_iterator::d epth
Returnerar mystack.size() - 1, så pval är på djup noll.
int depth() const;
recursive_directory_iterator::d isable_recursion_pending
Lagrar true i no_push.
void disable_recursion_pending();
recursive_directory_iterator::increment
Går vidare till nästa filnamn i följd.
recursive_directory_iterator& increment(error_code& ec);
Parameters
ec
Angiven felkod.
Kommentarer
Funktionen försöker gå vidare till nästa filnamn i den kapslade sekvensen. Om det lyckas lagrar det filnamnet i myentry, annars genererar det en iterator i slutet av sekvensen.
recursive_directory_iterator::operator!=
Returnerar !(*this == right).
bool operator!=(const recursive_directory_iterator& right) const;
Parameters
rätt
Recursive_directory_iterator för jämförelse.
recursive_directory_iterator::operator=
Standardoperatorerna för medlemstilldelning fungerar som förväntat.
recursive_directory_iterator& operator=(const recursive_directory_iterator&) = default;
recursive_directory_iterator& operator=(recursive_directory_iterator&&) noexcept = default;
Parameters
recursive_directory_iterator
Den recursive_directory_iterator kopieras till recursive_directory_iterator.
recursive_directory_iterator::operator==
Returnerar true endast om både *this och höger är iteratorer i slutet av sekvensen eller båda inte är end-of-sequence-iteratorer.
bool operator==(const recursive_directory_iterator& right) const;
Parameters
rätt
Recursive_directory_iterator för jämförelse.
recursive_directory_iterator::operator*
Returnerar myentry.
const directory_entry& operator*() const;
recursive_directory_iterator::operator->
Returnerar &**this.
const directory_entry * operator->() const;
recursive_directory_iterator::operator++
recursive_directory_iteratorÖkar .
recursive_directory_iterator& operator++();
recursive_directory_iterator operator++(int);
Parameters
int
Dummy-argument. Det är en C++-konvention som endast används för att skilja postfixet inkrementsoperatorn från prefixets inkrementsoperator. C++-standarden kräver att postfixformuläret använder en dummy-int-parameter.
Kommentarer
Den första medlemsfunktionen anropar increment()och returnerar *thissedan . Den andra medlemsfunktionen gör en kopia av objektet, anropar increment()och returnerar sedan kopian.
recursive_directory_iterator::options
Returnerar myoptions.
directory_options options() const;
recursive_directory_iterator::p op
Flyttar iteratorn till nästa post på nästa lägre djup.
void pop();
void pop(error_code& ec);
Parameters
ec
Felkoden som rapporterar status för åtgärden. Överlagringen som tar ett ec-argument rapporterar fel i ec i stället för att utlösa ett undantag.
Kommentarer
Om depth() == 0 objektet blir en iterator i slutet av sekvensen. Annars avslutar medlemsfunktionen genomsökningen av den aktuella katalogen (djupaste) och återupptas på nästa lägre djup.
recursive_directory_iterator::recursion_pending
Returnerar !no_push.
bool recursion_pending() const;
recursive_directory_iterator::recursive_directory_iterator
Konstruerar en 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;
Parameters
pval
Den angivna sökvägen.
error_code
Den angivna felkoden.
opts
De angivna katalogalternativen.
recursive_directory_iterator
Vars recursive_directory_iterator konstruktion recursive_directory_iterator ska vara en kopia.
Kommentarer
Den första konstruktorn skapar en iterator i slutet av sekvensen. Den andra och tredje konstruktorn lagrar false i no_push och directory_options::none i myoptionsoch försöker sedan öppna och läsa pval som en katalog. Om det lyckas initierar mystack de och myentry anger det första filnamnet som inte är katalog i den kapslade sekvensen. Annars skapar de en iterator i slutet av sekvensen.
Den fjärde och femte konstruktorn beter sig på samma sätt som den andra och tredje, förutom att de först lagrar opts i myoptions. Standardkonstruktorn fungerar som förväntat.
Se även
referens för huvudfiler
<filesystem>
Filsystemnavigering (C++)