名稱空間
變體
操作

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) 檢查 lhsrhs 是否相等。等價於 !(lhs < rhs) && !(rhs < lhs)
2) 檢查 lhsrhs 是否不相等。等價於 !(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) 獲取 lhsrhs 的三路比較結果。等價於 lhs.compare(rhs) <=> 0

這些函式對常規的無限定有限定查詢不可見,而只能在 std::filesystem::path 是引數的關聯類時由實參依賴查詢找到。這阻止了存在 using namespace std::filesystem; using 指令時的非預期轉換。

<<=>>=!= 運算子分別從 operator<=>operator== 合成

(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 的東西 設為隱藏友元

[編輯] 參閱

按字典順序比較兩個路徑的詞法表示
(公開成員函式) [編輯]
檢查兩個路徑是否引用相同的檔案系統物件
(函式) [編輯]