Namespaces
Variants

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

From cppreference.net
int compare ( const path & p ) const noexcept ;
(1) (filesystem TS)
int compare ( const string_type & str ) const ;
(2) (filesystem TS)
int compare ( const value_type * s ) const ;
(3) (filesystem 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/"; // 字句順イテレーションでは "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/_"

関連項目

2つのパスを辞書順で比較する
(関数)