Namespaces
Variants

std::experimental::filesystem::path:: compare

From cppreference.net
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

#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)