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