std::experimental::filesystem::path::compare
Von cppreference.com
< cpp | experimental | fs | path
| int compare( const path& p ) const noexcept; |
(1) | (Dateisystem-TS) |
| int compare( const string_type& str ) const; |
(2) | (Dateisystem-TS) |
| int compare( const value_type* s ) const; |
(3) | (Dateisystem-TS) |
Vergleicht die lexikalischen Repräsentationen des Pfades und eines anderen Pfades.
1) Gibt einen Wert kleiner als, gleich oder größer als 0 zurück, wenn die native Repräsentation des Pfades (native()) lexikalisch kleiner als, gleich oder größer als die native Repräsentation von p (p.native()) ist. Der Vergleich erfolgt elementweise, als ob beide Pfade von begin() bis end() durchlaufen würden.
2) Äquivalent zu compare(path(str)).
3) Äquivalent zu compare(path(s)).
Inhalt |
[edit] Parameter
| p | - | ein Pfad zum Vergleichen |
| str | - | ein String, der einen zu vergleichenden Pfad darstellt |
| s | - | ein nullterminierter String, der einen zu vergleichenden Pfad darstellt |
[edit] Rückgabewert
Ein Wert kleiner als 0, wenn der Pfad lexikalisch kleiner als der gegebene Pfad ist.
Ein Wert gleich 0, wenn der Pfad lexikalisch gleich dem gegebenen Pfad ist.
Ein Wert größer als 0, wenn der Pfad lexikalisch größer als der gegebene Pfad ist.
[edit] Ausnahmen
2,3) Kann implementierungsdefinierte Ausnahmen auslösen.
[edit] Hinweise
Für Zwei-Wege-Vergleiche sind binäre Operatoren möglicherweise besser geeignet.
[edit] Beispiel
Führen Sie diesen Code aus
#include <experimental/filesystem> #include <iostream> namespace fs = std::experimental::filesystem; void demo(int rc, fs::path p1, fs::path p2) { if (rc < 0) std::cout << p1 << " < " << p2 << '\n'; else if (rc > 0) std::cout << p1 << " > " << p2 << '\n'; else if (rc == 0) std::cout << p1 << " = " << p2 << '\n'; } int main() { fs::path p1 = "/a/b/"; // as if "a/b/." for lexicographical iteration fs::path p2 = "/a/b/#"; demo(p1.compare(p2), p1, p2); demo(p1.compare("a/b/_"), p1, "a/b/_"); }
Ausgabe
"/a/b/" > "/a/b/#" "/a/b/" < "a/b/_"
[edit] Siehe auch
| vergleicht zwei Pfade lexikographisch (function) |