Namensräume
Varianten
Aktionen

std::filesystem::recursive_directory_iterator::operator++, std::filesystem::recursive_directory_iterator::increment

Von cppreference.com
 
 
 
 
recursive_directory_iterator& operator++();
(1) (seit C++17)
recursive_directory_iterator& increment( std::error_code& ec );
(2) (seit C++17)

Setzt den Iterator auf den nächsten Eintrag. Macht alle Kopien des vorherigen Wertes von *this ungültig.

Wenn keine weiteren Einträge im aktuell iterierten Verzeichnis mehr vorhanden sind, wird die Iteration im übergeordneten Verzeichnis fortgesetzt. Der Vorgang wird wiederholt, wenn das übergeordnete Verzeichnis keine Geschwistereinträge hat, die iteriert werden können. Wenn die Wurzel der rekursiv durchlaufenen Verzeichnishierarchie erreicht wird (es gibt keine Kandidateneinträge bei depth() == 0), wird *this auf einen End-Iterator gesetzt.

Andernfalls, wenn *this auf ein Verzeichnis verweist, wird in dieses hineiniteriert, wenn die folgenden Bedingungen erfüllt sind:

  • disable_recursion_pending() wurde vor dieser Inkrementierung nicht aufgerufen, d.h. recursion_pending() == true.
  • Das Verzeichnis ist kein Symlink oder das Verfolgen von Symlinks ist aktiviert, d.h. mindestens eine der folgenden Bedingungen ist erfüllt:
    • !is_symlink((*this)->symlink_status()).
    • (options() & directory_options::follow_directory_symlink) != directory_options::none)

Inhalt

[bearbeiten] Parameter

ec - Fehlercode, in dem der Fehlerstatus gespeichert wird

[bearbeiten] Rückgabewert

*this

[bearbeiten] Ausnahmen

Jede Überladung, die nicht als noexcept markiert ist, kann std::bad_alloc auslösen, wenn die Speicherzuweisung fehlschlägt.

1) Wirft std::filesystem::filesystem_error bei zugrundeliegenden Betriebssystem-API-Fehlern, konstruiert mit dem Betriebssystem-Fehlercode als Fehlercode-Argument.
2) Setzt einen std::error_code& Parameter auf den Betriebssystem-API-Fehlercode, wenn ein Betriebssystem-API-Aufruf fehlschlägt, und führt ec.clear() aus, wenn keine Fehler auftreten.

[bearbeiten] Beispiel

[bearbeiten] Fehlerberichte

Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 3013 C++17 error_code-Überladung als noexcept markiert, kann aber Speicher allokieren noexcept entfernt