Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Beschrijft een invoer-iterator die de bestandsnamen in een map doorloopt, mogelijk recursief aflopend in submappen. Voor een iterator Xevalueert de expressie *X naar een object van klasse directory_entry dat de bestandsnaam verpakt en alles wat bekend is over de status ervan.
Zie Bestandssysteemnavigatie (C++) voor meer informatie en codevoorbeelden.
Syntaxis
class recursive_directory_iterator;
Opmerkingen
In de klassesjabloon wordt het volgende opgeslagen:
een object van het type
stack<pair<directory_iterator, path>>, hier genoemdmystackvoor de doeleinden van tentoonstelling, die het nest van mappen vertegenwoordigt dat moet worden gesequentieerdeen object van het type
directory_entrydat hier wordt aangeroepenmyentry, die de huidige bestandsnaam in de directoryreeks vertegenwoordigteen object van het type
bool, hier genoemdno_push, waarmee wordt vastgelegd of recursieve afstamming in submappen is uitgeschakeldeen object van het type
directory_options, hier genoemdmyoptions, waarin de opties worden vastgelegd die tijdens de bouw zijn vastgesteld
Een standaardgeconstrueerd object van het type recursive_directory_iterator heeft een iterator mystack.top().first voor het einde van de reeks en vertegenwoordigt het einde van de reeks-iterator. Bijvoorbeeld, op basis van de map abc met vermeldingen def (een map), def/ghien jklde code:
for (recursive_directory_iterator next(path("abc")), end; next != end; ++next)
visit(next->path());
zal een bezoek aanroepen met de argumenten path("abc/def/ghi") en path("abc/jkl"). U kunt sequentiëren op twee manieren kwalificeren via een mapsubstructuur:
Een mapsymlink wordt alleen gescand als u een
recursive_directory_iteratordirectory_optionsargument maakt waarvan de waarde isdirectory_options::follow_directory_symlink.Als u aanroept
disable_recursion_pending, wordt een volgende map die tijdens een increment is aangetroffen, niet recursief gescand.
Constructors
| Constructeur | Beschrijving |
|---|---|
| recursive_directory_iterator | Maakt een recursive_directory_iterator. |
Functies voor leden
| Lid, functie | Beschrijving |
|---|---|
| diepte | Retourneert mystack.size() - 1, dus pval is diepte nul. |
| disable_recursion_pending | Winkels true in no_push. |
| increment | Hiermee gaat u naar de volgende bestandsnaam in volgorde. |
| Opties | Retourneert myoptions. |
| pop | Hiermee verplaatst u de iterator naar het volgende item in de volgende diepte. |
| recursion_pending | Retourneert !no_push. |
Bedieners
| Operator | Beschrijving |
|---|---|
| operator!= | Retourneert !(*this == right). |
| operator= | De standaardoperators voor ledentoewijzing gedragen zich zoals verwacht. |
| operator== | Retourneert true alleen als beide *this en rechts end-of-sequence iterators zijn of beide geen end-of-sequence-iterators zijn. |
| operator* | Retourneert myentry. |
| operator-> | Retourneert &**this. |
| operator++ | Hiermee wordt de recursive_directory_iterator. |
Requirements
Rubriek:<filesystem>
Naamruimte:std::filesystem
recursive_directory_iterator::d epth
Retourneert mystack.size() - 1, dus pval is diepte nul.
int depth() const;
recursive_directory_iterator::d isable_recursion_pending
Winkels true in no_push.
void disable_recursion_pending();
recursive_directory_iterator::increment
Hiermee gaat u naar de volgende bestandsnaam in volgorde.
recursive_directory_iterator& increment(error_code& ec);
Parameters
ec
Opgegeven foutcode.
Opmerkingen
De functie probeert naar de volgende bestandsnaam in de geneste reeks te gaan. Als dit lukt, wordt die bestandsnaam opgeslagen; myentryanders produceert het een iterator voor het einde van de reeks.
recursive_directory_iterator::operator!=
Retourneert !(*this == right).
bool operator!=(const recursive_directory_iterator& right) const;
Parameters
rechts
De recursive_directory_iterator ter vergelijking.
recursive_directory_iterator::operator=
De standaardoperators voor ledentoewijzing gedragen zich zoals verwacht.
recursive_directory_iterator& operator=(const recursive_directory_iterator&) = default;
recursive_directory_iterator& operator=(recursive_directory_iterator&&) noexcept = default;
Parameters
recursive_directory_iterator
De recursive_directory_iterator worden gekopieerd naar de recursive_directory_iterator.
recursive_directory_iterator::operator==
Retourneert true alleen als beide *this en rechts end-of-sequence iterators zijn of beide geen end-of-sequence-iterators zijn.
bool operator==(const recursive_directory_iterator& right) const;
Parameters
rechts
De recursive_directory_iterator ter vergelijking.
recursive_directory_iterator::operator*
Retourneert myentry.
const directory_entry& operator*() const;
recursive_directory_iterator::operator->
Retourneert &**this.
const directory_entry * operator->() const;
recursive_directory_iterator::operator++
Hiermee wordt de recursive_directory_iterator.
recursive_directory_iterator& operator++();
recursive_directory_iterator operator++(int);
Parameters
int
Dummy-argument. Het is een C++-conventie die alleen wordt gebruikt om de operator voor incrementele voorvoegsels te onderscheiden van de operator voor incrementele voorvoegsels. Voor de C++-standaard moet het postfix-formulier een dummy int-parameter gebruiken.
Opmerkingen
De eerste lidfunctie roept increment()aan en retourneert *thisvervolgens . De tweede lidfunctie maakt een kopie van het object, roept aan increment()en retourneert vervolgens de kopie.
recursive_directory_iterator::options
Retourneert myoptions.
directory_options options() const;
recursive_directory_iterator::p op
Hiermee verplaatst u de iterator naar het volgende item in de volgende diepte.
void pop();
void pop(error_code& ec);
Parameters
ec
De foutcode waarmee de status van de bewerking wordt gerapporteerd. De overbelasting die een ec-argument gebruikt, rapporteert fouten in ec in plaats van een uitzondering te genereren.
Opmerkingen
Als depth() == 0 het object een end-of-sequence iterator wordt. Anders beëindigt de lidfunctie het scannen van de huidige (diepste) map en wordt hervat op de volgende diepte.
recursive_directory_iterator::recursion_pending
Retourneert !no_push.
bool recursion_pending() const;
recursive_directory_iterator::recursive_directory_iterator
Maakt een 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
Het opgegeven pad.
error_code
De opgegeven foutcode.
opts
De opgegeven mapopties.
recursive_directory_iterator
Waarvan recursive_directory_iterator de constructie recursive_directory_iterator een kopie is.
Opmerkingen
De eerste constructor produceert een iterator voor het einde van de reeks. De tweede en derde constructors slaan false in no_push en directory_options::none in myoptionsen proberen vervolgens pval te openen en te lezen als map. Als dit lukt, initialiseren mystack ze en myentry wijzen ze de eerste niet-mapbestandsnaam in de geneste reeks aan; anders produceren ze een iterator voor de end-of-sequence.
De vierde en vijfde constructors gedragen zich hetzelfde als de tweede en derde, behalve dat ze zich voor het eerst opslaan aanmeldenmyoptions. De standaardconstructor gedraagt zich zoals verwacht.
Zie ook
headerbestanden
<bestandssysteem>
Bestandssysteemnavigatie (C++)