std::experimental::filesystem::path:: compare
From cppreference.net
<
cpp
|
experimental
|
fs
|
path
|
int
compare
(
const
path
&
p
)
const
noexcept
;
|
(1) | (filesystem TS) |
|
int
compare
(
const
string_type
&
str
)
const
;
|
(2) | (filesystem TS) |
|
int
compare
(
const
value_type
*
s
)
const
;
|
(3) | (filesystem TS) |
Compara las representaciones léxicas de la ruta y otra ruta.
1)
Retorna un valor menor que, igual a o mayor que
0
si la representación nativa de la ruta (
native
()) es respectivamente lexicográficamente menor que, igual a o mayor que la representación nativa de
p
(
p.
native
(
)
). La comparación se realiza elemento por elemento, como si se iteraran ambas rutas desde
begin
() hasta
end
().
2)
Equivalente a
compare
(
path
(
str
)
)
.
3)
Equivalente a
compare
(
path
(
s
)
)
.
Contenidos |
Parámetros
| p | - | una ruta a comparar |
| str | - | una 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
2,3)
Puede lanzar excepciones definidas por la implementación.
Notas
Para comparaciones bidireccionales, los operadores binarios pueden ser más apropiados.
Ejemplo
Ejecutar este código
#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/"; // como "a/b/." para iteración lexicográfica fs::path p2 = "/a/b/#"; demo(p1.compare(p2), p1, p2); demo(p1.compare("a/b/_"), p1, "a/b/_"); }
Salida:
"/a/b/" > "/a/b/#" "/a/b/" < "a/b/_"
Véase también
|
compara lexicográficamente dos rutas
(función) |