std::experimental::filesystem::path:: compare
From cppreference.net
<
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 | - | 比較対象のパスを表す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つのパスを辞書順で比較する
(関数) |