operator==,!=,<,<=,>,>=,<=>(std::filesystem::path)
来自 cppreference.com
< 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 如果相应的比较结果为,则为 false 否则。
7) 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。
[edit] 示例
本节内容不完整 原因:没有示例 |
[edit] 缺陷报告
以下行为更改的缺陷报告已追溯应用到先前发布的 C++ 标准。
DR | 应用于 | 已发布的行为 | 正确行为 |
---|---|---|---|
LWG 3065 | C++17 | 在存在using-directive的情况下,允许比较可转换为path 的所有内容 |
使隐藏的友元 |
[edit] 另请参阅
按字典顺序比较两个路径的词法表示 (公共成员函数) | |
(C++17) |
检查两个路径是否引用同一个文件系统对象 (函数) |