std::filesystem::path:: compare
|
int
compare
(
const
path
&
p
)
const
noexcept
;
|
(1) | (depuis C++17) |
|
int
compare
(
const
string_type
&
str
)
const
;
int compare ( std:: basic_string_view < value_type > str ) const ; |
(2) | (depuis C++17) |
|
int
compare
(
const
value_type
*
s
)
const
;
|
(3) | (depuis C++17) |
Compare les représentations lexicales du chemin et d'un autre chemin.
has_root_directory()
est
false
et une valeur supérieure à zéro sinon.
relative_path()
) est respectivement lexicographiquement inférieure, égale ou supérieure à la partie relative de
p
(
p.
relative_path
(
)
). La comparaison est effectuée élément par élément, comme en itérant les deux chemins de
begin()
à
end()
et en comparant le résultat de
native()
pour chaque élément.
Table des matières |
Paramètres
| p | - | un chemin à comparer |
| str | - | une chaîne ou une vue de chaîne représentant un chemin à comparer |
| s | - | une chaîne terminée par un caractère nul représentant un chemin à comparer |
Valeur de retour
Une valeur inférieure à 0 si le chemin est lexicographiquement inférieur au chemin donné.
Une valeur égale à 0 si le chemin est lexicographiquement égal au chemin donné.
Une valeur supérieure à 0 si le chemin est lexicographiquement supérieur au chemin donné.
Exceptions
Notes
Pour les comparaisons bidirectionnelles, les opérateurs binaires peuvent être plus appropriés.
Exemple
#include <filesystem> #include <iostream> #include <string_view> namespace fs = std::filesystem; void demo(fs::path p1, fs::path p2, std::string_view msg) { std::cout << p1; const int rc = p1.compare(p2); if (rc < 0) std::cout << " < "; else if (rc > 0) std::cout << " > "; else std::cout << " == "; std::cout << p2 << " \t: " << msg << '\n'; } int main() { demo("/a/b/", "/a/b/", "simple"); demo("/a/b/", "/a/b/c", "simple"); demo("/a/b/../b", "/a/b", "no canonical conversion"); demo("/a/b", "/a/b/.", "no canonical conversion"); demo("/a/b/", "a/c", "absolute paths order after relative ones"); }
Sortie :
"/a/b/" == "/a/b/" : simple "/a/b/" < "/a/b/c" : simple "/a/b/../b" > "/a/b" : no canonical conversion "/a/b" < "/a/b/." : no canonical conversion "/a/b/" > "a/c" : absolute paths order after relative ones
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 2936 | C++17 | comparait tous les éléments de chemin directement | nom racine et répertoire racine traités séparément |
Voir aussi
|
(C++17)
(C++17)
(until C++20)
(C++17)
(until C++20)
(C++17)
(until C++20)
(C++17)
(until C++20)
(C++17)
(until C++20)
(C++20)
|
compare lexicographiquement deux chemins
(fonction) |