名稱空間
變體
操作

std::experimental::filesystem::path::compare

來自 cppreference.com
< cpp‎ | experimental‎ | fs‎ | path
 
 
實驗性
技術規範
檔案系統庫 (檔案系統 TS)
庫基礎 (庫基礎 TS)
庫基礎 2 (庫基礎 TS v2)
庫基礎 3 (庫基礎 TS v3)
並行性擴充套件 (並行性 TS)
並行性擴充套件 2 (並行性 TS v2)
併發性擴充套件 (併發性 TS)
併發擴充套件 2 (併發 TS v2)
概念 (概念 TS)
範圍 (範圍 TS)
反射 (反射 TS)
數學特殊函式 (特殊函式 TR)
實驗性非 TS
模式匹配
線性代數
std::execution
契約
2D 圖形
 
 
 
int compare( const path& p ) const noexcept;
(1) (filesystem TS)
int compare( const string_type& str ) const;
(2) (filesystem TS)
int compare( const value_type* s ) const;
(3) (filesystem TS)

比較路徑和另一個路徑的詞法表示。

1) 如果路徑的本機表示(native())按字典順序分別小於、等於或大於 p 的本機表示(p.native()),則返回一個小於、等於或大於 0 的值。比較按元素進行,如同透過從 begin() 到 end() 遍歷兩個路徑一樣。
2) 等價於 compare(path(str))
3) 等價於 compare(path(s))

目錄

[編輯] 引數

p - 要比較的路徑
str - 表示要比較的路徑的字串
s - 表示要比較的路徑的空終止字串

[編輯] 返回值

如果路徑按字典順序小於給定路徑,則返回一個小於 0 的值。

如果路徑按字典順序等於給定路徑,則返回一個等於 0 的值。

如果路徑按字典順序大於給定路徑,則返回一個大於 0 的值。

[編輯] 異常

2,3) 可能會丟擲實現定義的異常。

[編輯] 注意

對於雙向比較,二元運算子可能更合適。

[編輯] 示例

#include <experimental/filesystem>
#include <iostream>
namespace fs = std::experimental::filesystem;
 
void demo(int rc, fs::path p1, fs::path p2)
{
    if (rc < 0)
        std::cout << p1 << " < " << p2 << '\n';
    else if (rc > 0)
        std::cout << p1 << " > " << p2 << '\n';
    else if (rc == 0)
        std::cout << p1 << " = " << p2 << '\n';
}
 
int main()
{
    fs::path p1 = "/a/b/"; // as if "a/b/." for lexicographical iteration
    fs::path p2 = "/a/b/#";
    demo(p1.compare(p2), p1, p2);
    demo(p1.compare("a/b/_"), p1, "a/b/_");
}

輸出

"/a/b/" > "/a/b/#"
"/a/b/" < "a/b/_"

[編輯] 參閱

按字典順序比較兩個路徑
(函式) [編輯]