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) |
Сравнивает лексические представления пути и другого пути.
1)
Возвращает значение меньше, равное или большее
0
если нативное представление пути (
native
()) лексикографически соответственно меньше, равно или больше нативного представления
p
(
p.
native
(
)
). Сравнение выполняется поэлементно, как при итерации обоих путей от
begin
() до
end
().
2)
Эквивалентно
compare
(
path
(
str
)
)
.
3)
Эквивалентно
compare
(
path
(
s
)
)
.
Содержание |
Параметры
| p | - | путь для сравнения |
| str | - | строка, представляющая путь для сравнения |
| s | - | нуль-терминированная строка, представляющая путь для сравнения |
Возвращаемое значение
Значение меньше 0 если путь лексикографически меньше заданного пути.
Значение, равное 0 если путь лексикографически равен заданному пути.
Значение больше 0 если путь лексикографически больше заданного пути.
Исключения
2,3)
Может генерировать исключения, определяемые реализацией.
Примечания
Для двусторонних сравнений бинарные операторы могут быть более подходящими.
Пример
Запустить этот код
#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/"; // как "a/b/." для лексикографической итерации fs::path p2 = "/a/b/#"; demo(p1.compare(p2), p1, p2); demo(p1.compare("a/b/_"), p1, "a/b/_"); }
Вывод:
"/a/b/" > "/a/b/#" "/a/b/" < "a/b/_"
Смотрите также
|
лексикографически сравнивает два пути
(функция) |