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 則為
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) |
檢查兩個路徑是否引用相同的檔案系統物件 (函式) |