std::experimental::filesystem::path:: compare
From cppreference.net
<
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 | - | 表示要比较路径的以空字符结尾的字符串 |
返回值
若路径在字典序上小于给定路径,则返回一个小于 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/"; // 在词典序迭代中相当于 "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/_"
参见
|
按字典序比较两个路径
(函数) |