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) |