operator==,!=,<,<=,>,>=, <=>(std::filesystem::path)
friend bool operator==( const path& lhs, const path& rhs ) noexcept; | (1) | (с C++17) |
friend bool operator!=( const path& lhs, const path& rhs ) noexcept; | (2) | (с C++17) (до C++20) |
friend bool operator<( const path& lhs, const path& rhs ) noexcept; | (3) | (с C++17) (до C++20) |
friend bool operator<=( const path& lhs, const path& rhs ) noexcept; | (4) | (с C++17) (до C++20) |
friend bool operator>( const path& lhs, const path& rhs ) noexcept; | (5) | (с C++17) (до C++20) |
friend bool operator>=( const path& lhs, const path& rhs ) noexcept; | (6) | (с C++17) (до C++20) |
friend std::strong_ordering
operator<=>( const path& lhs, const path& rhs ) noexcept;
| (7) | (с C++20) |
Сравнивает два пути лексикографически.
lhs и rhs. Эквивалентно !(lhs < rhs) && !(rhs < lhs).lhs и rhs. Эквивалентно !(lhs == rhs).lhs чем rhs. Эквивалентно lhs.compare(rhs) < 0.lhs чем rhs. Эквивалентно !(rhs < lhs).lhs чем rhs. Эквивалентно rhs < lhs.lhs чем rhs. Эквивалентно !(lhs < rhs).lhs и rhs. Эквивалентно lhs.compare(rhs) <=> 0.Эти функции не видны для обычного неквалифицированного или квалифицированного поиска и могут быть найдены только с помощью поиска, зависящего от аргументов, когда std::filesystem::path является связанным классом аргументов. Это предотвращает нежелательные преобразования в присутствии using namespace std::filesystem; using-директивы.
| Операторы | (с C++20) |
Параметры
| lhs, rhs | - | сравниваемые пути |
Возвращаемое значение
true если соответствующее сравнение дает false, в противном случае.std::strong_ordering::less если lhs меньше rhs, в противном случае std::strong_ordering::greater если rhs меньше lhs, в противном случае std::strong_ordering::equal.Примечания
Равенство и эквивалентность путей имеют разный смысл.
В случае равенства, определяемого operator==, сравниваются только лексические представления. Поэтому path("a") == path("b") никогда не true.
В случае эквивалентности, определяемой std::filesystem::equivalent(), проверяется, ссылаются ли два пути на один и тот же объект файловой системы. Таким образом, equivalent("a", "b") вернёт true если пути ссылаются на один и тот же файл.
Пример
Отчеты об ошибках
Следующие отчеты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применено к | Поведение при публикации | Правильное поведение |
|---|---|---|---|
| LWG 3065 | C++17 | разрешал сравнение всего, что допускает преобразование к path в присутствии using-директивы | сделал скрытым другом |
См. также
| сравнивает лексические представления двух путей лексикографически (публичный член-функция) |
|
|
(C++17) | проверяет, ссылаются ли два пути на один и тот же объект файловой системы (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/filesystem/path/operator_cmp