std::filesystem::path::compare
< cpp | filesystem | path
int compare( const path& p ) const noexcept; |
(1) | (C++17 起) |
int compare( const string_type& str ) const; int compare( std::basic_string_view<value_type> str ) const; |
(2) | (C++17 起) |
int compare( const value_type* s ) const; |
(3) | (C++17 起) |
比较 path 与另一 path 的字典表示。
1) 若 path 的原生表示( native() )以字典序小于、等于或大于
p
的原生表示( p.native() ),则分别返回小于、等于或大于 0 的值。逐元素进行比较,如同通过在二个 path 上从 begin() 迭代到 end() 。2) 等价于 compare(path(str)) 。
3) 等价于 compare(path(s)) 。
参数
p | - | 要比较的 path |
str | - | 表示要比较的表示路径的字符串或字符串视图 |
s | - | 表示要比较的路径的空终止字符串 |
返回值
若 path 的字典序小于给定 path 则为小于 0 的值。
若 path 的字典序等于给定 path 则为等于 0 的值。
若 path 的字典序大于给定 path 则为大于 0 的值。
异常
2-3) (无)
注意
对于双路比较,二元运算符可能更适合。
示例
运行此代码
#include <iostream> #include <filesystem> namespace fs = std::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/"; // 对于字典迭代如同 "a/b/." 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/_"
参阅
(C++20 前)(C++20 前)(C++20 前)(C++20 前)(C++20 前)(C++20) |
以字典序比较二个路径 (函数) |