std::experimental::filesystem::path::compare
來自 cppreference.com
< cpp | experimental | fs | path
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/_"
[編輯] 參閱
按字典順序比較兩個路徑 (函式) |