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/"; // 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/_"

참고 항목

두 경로를 사전식으로 비교합니다
(함수)