Namespaces
Variants

std::experimental::filesystem::path:: compare

From cppreference.net
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/_"

参见

按字典序比较两个路径
(函数)