std::filesystem::path:: compare
|
int
compare
(
const
path
&
p
)
const
noexcept
;
|
(1) | (desde C++17) |
|
int
compare
(
const
string_type
&
str
)
const
;
int compare ( std:: basic_string_view < value_type > str ) const ; |
(2) | (desde C++17) |
|
int
compare
(
const
value_type
*
s
)
const
;
|
(3) | (desde C++17) |
Compara las representaciones léxicas de la ruta y otra ruta.
has_root_directory()
es
false
y un valor mayor que cero en caso contrario.
relative_path()
) es respectivamente lexicográficamente menor que, igual a o mayor que la porción relativa de
p
(
p.
relative_path
(
)
). La comparación se realiza elemento por elemento, como si se iteraran ambas rutas desde
begin()
hasta
end()
y comparando el resultado de
native()
para cada elemento.
Contenidos |
Parámetros
| p | - | una ruta a comparar |
| str | - | una cadena o vista de cadena que representa la ruta a comparar |
| s | - | una cadena terminada en nulo que representa la ruta a comparar |
Valor de retorno
Un valor menor que 0 si la ruta es lexicográficamente menor que la ruta dada.
Un valor igual a 0 si la ruta es lexicográficamente igual a la ruta dada.
Un valor mayor que 0 si la ruta es lexicográficamente mayor que la ruta dada.
Excepciones
Notas
Para comparaciones bidireccionales, los operadores binarios pueden ser más adecuados.
Ejemplo
#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"); }
Salida:
"/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
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2936 | C++17 | comparaba todos los elementos de ruta directamente | nombre raíz y directorio raíz manejados por separado |
Véase también
|
(C++17)
(C++17)
(hasta C++20)
(C++17)
(hasta C++20)
(C++17)
(hasta C++20)
(C++17)
(hasta C++20)
(C++17)
(hasta C++20)
(C++20)
|
compara lexicográficamente dos rutas
(función) |