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 для using namespace std::filesystem;.
| Операторы | (начиная с 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/cpp/filesystem/path/operator_cmp