std::experimental::filesystem::path::compare
来自 cppreference.com
< cpp | experimental | fs | path
int compare( const path& p ) const noexcept; |
(1) | (文件系统 TS) |
int compare( const string_type& str ) const; |
(2) | (文件系统 TS) |
int compare( const value_type* s ) const; |
(3) | (文件系统 TS) |
比较路径和另一个路径的词法表示。
1) 如果路径的本机表示 (native()) 在词法上小于、等于或大于 p (p.native()) 的本机表示,则返回小于、等于或大于 0 的值。比较按元素进行,就好像通过从 begin() 迭代到 end() 遍历两个路径一样。
2) 等效于 compare(path(str)).
3) 等效于 compare(path(s)).
内容 |
[编辑] 参数
p | - | 要比较的路径 |
str | - | 表示要比较的路径的字符串 |
s | - | 表示要比较的路径的以 null 结尾的字符串 |
[编辑] 返回值
如果路径在词法上小于给定路径,则返回小于 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/_"
[编辑] 另请参阅
按词法比较两个路径 (函数) |