operator==,!=,<,<=,>,>=,<=>(std::filesystem::path)
来自 cppreference.cn
< cpp | 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 起) |
按字典序比较二个路径。
1) 检查
lhs
与 rhs
是否相等。等价于 !(lhs < rhs) && !(rhs < lhs)
。2) 检查
lhs
与 rhs
是否不相等。等价于 !(lhs == rhs)
。3) 检查
lhs
是否小于 rhs
。等价于 lhs.compare(rhs) < 0
。4) 检查
lhs
是否小于或等于 rhs
。等价于 !(rhs < lhs)
。5) 检查
lhs
是否大于 rhs
。等价于 rhs < lhs
。6) 检查
lhs
是否大于或等于 rhs
。等价于 !(lhs < rhs)
。7) 获取
lhs
与 rhs
的三路比较结果。等价于 lhs.compare(rhs) <=> 0
。这些函数对常规的无限定或有限定查找不可见,而只能在 std::filesystem::path 是参数的关联类时由实参依赖查找找到。这阻止了存在 using namespace std::filesystem;
using 指令时的非预期转换。
|
(C++20 起) |
目录 |
[编辑] 参数
lhs, rhs | - | 要比较的路径 |
[编辑] 返回值
1-6) 若对应的比较产生 true 则为
true
,否则为 false
。7) 若
lhs
小于 rhs
则为 std::strong_ordering::less
,否则若 rhs
小于 lhs
则为 std::strong_ordering::greater
,否则为 std::strong_ordering::equal
。[编辑] 注意
路径相等性和等价性有不同的语义。
对于由 operator==
所决定的相等性,仅比较词法表示。因此,path("a") == path("b")
绝不会是 true
。
对于由 std::filesystem::equivalent() 所决定的等价性,它检查两个路径是否解析到相同的文件系统对象。故若路径解析到相同文件,则 equivalent("a", "b")
将返回 true
。
[编辑] 示例
本节不完整 原因:无示例 |
[编辑] 缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 发布时的行为 | 正确的行为 |
---|---|---|---|
LWG 3065 | C++17 | 在存在 using 指令 时允许比较所有能转换为 path 的东西 |
设为隐藏友元 |
[编辑] 参阅
按字典顺序比较两个路径的词法表示 (公开成员函数) | |
(C++17) |
检查两个路径是否引用相同的文件系统对象 (函数) |