std::experimental::filesystem::path::compare
来自cppreference.com
| |
(1) | (文件系统 TS) |
| |
(2) | (文件系统 TS) |
| |
(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/"; // 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/_"
参阅
| 按字典序比较两个路径 (函数) |