Namensräume
Varianten
Aktionen

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

#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) [edit]