名前空間
変種
操作

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

From cppreference.com
< cpp‎ | experimental‎ | fs‎ | path
 
 
 
 
 
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 - 比較対象のパスを表すヌル終端文字列

[編集] 戻り値

パスが指定されたパスよりも辞書順で小さい場合は、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/_"

[編集] 関連項目

2つのパスを辞書順に比較します
(function) [編集]
English 日本語 中文(简体) 中文(繁體)