Namensräume
Varianten
Aktionen

operator==,!=,<,<=,>,>=,<=>(std::filesystem::path)

Von cppreference.com
< cpp‎ | filesystem‎ | path
 
 
 
 
friend bool operator==( const path& lhs, const path& rhs ) noexcept;
(1) (seit C++17)
friend bool operator!=( const path& lhs, const path& rhs ) noexcept;
(2) (seit C++17)
(bis C++20)
friend bool operator<( const path& lhs, const path& rhs ) noexcept;
(3) (seit C++17)
(bis C++20)
friend bool operator<=( const path& lhs, const path& rhs ) noexcept;
(4) (seit C++17)
(bis C++20)
friend bool operator>( const path& lhs, const path& rhs ) noexcept;
(5) (seit C++17)
(bis C++20)
friend bool operator>=( const path& lhs, const path& rhs ) noexcept;
(6) (seit C++17)
(bis C++20)
friend std::strong_ordering
    operator<=>( const path& lhs, const path& rhs ) noexcept;
(7) (seit C++20)

Vergleicht zwei Pfade lexikographisch.

1) Prüft, ob lhs und rhs gleich sind. Äquivalent zu !(lhs < rhs) && !(rhs < lhs).
2) Prüft, ob lhs und rhs nicht gleich sind. Äquivalent zu !(lhs == rhs).
3) Prüft, ob lhs kleiner als rhs ist. Äquivalent zu lhs.compare(rhs) < 0.
4) Prüft, ob lhs kleiner oder gleich rhs ist. Äquivalent zu !(rhs < lhs).
5) Prüft, ob lhs größer als rhs ist. Äquivalent zu rhs < lhs.
6) Prüft, ob lhs größer oder gleich rhs ist. Äquivalent zu !(lhs < rhs).
7) Ermittelt das Drei-Wege-Vergleichsergebnis von lhs und rhs. Äquivalent zu lhs.compare(rhs) <=> 0.

Diese Funktionen sind für gewöhnliche unqualifizierte oder qualifizierte Suche nicht sichtbar und können nur durch argumentabhängige Suche gefunden werden, wenn std::filesystem::path eine zugeordnete Klasse der Argumente ist. Dies verhindert unerwünschte Konvertierungen bei einer using-directive wie using namespace std::filesystem;.

Die Operatoren <, <=, >, >= und != sind synthetisiert aus operator<=> und operator== beziehungsweise.

(seit C++20)

Inhalt

[edit] Parameter

lhs, rhs - die zu vergleichenden Pfade

[edit] Rückgabewert

1-6) true, wenn der entsprechende Vergleich zutrifft, andernfalls false.
7) std::strong_ordering::less, wenn lhs kleiner als rhs ist, andernfalls std::strong_ordering::greater, wenn rhs kleiner als lhs ist, andernfalls std::strong_ordering::equal.

[edit] Anmerkungen

Pfadgleichheit und Pfadäquivalenz haben unterschiedliche Semantiken.

Im Falle der Gleichheit, wie sie von operator== bestimmt wird, werden nur die lexikalischen Darstellungen verglichen. Daher ist path("a") == path("b") niemals true.

Im Falle der Äquivalenz, wie sie von std::filesystem::equivalent() bestimmt wird, wird geprüft, ob zwei Pfade auf dasselbe Dateisystemobjekt *verweisen*. Somit gibt equivalent("a", "b") true zurück, wenn die Pfade auf dieselbe Datei verweisen.

[edit] Beispiel

[edit] 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 3065 C++17 erlaubte den Vergleich von allem, was in Gegenwart einer using-directive in path konvertierbar ist versteckte Freundfunktion gemacht

[edit] Siehe auch

vergleicht die lexikalischen Darstellungen zweier Pfade lexikographisch
(public member function) [edit]
prüft, ob zwei Pfade auf dasselbe Dateisystemobjekt verweisen
(Funktion) [bearbeiten]