Namespaces
Variants

std::filesystem:: relative, std::filesystem:: proximate

From cppreference.net
헤더 파일에 정의됨 <filesystem>
path relative ( const std:: filesystem :: path & p,
std:: error_code & ec ) ;
(1) (C++17부터)
(2) (C++17부터)
path relative ( const std:: filesystem :: path & p,

const std:: filesystem :: path & base,

std:: error_code & ec ) ;
(3) (C++17부터)
path proximate ( const std:: filesystem :: path & p,
std:: error_code & ec ) ;
(4) (C++17부터)
(5) (C++17부터)
path proximate ( const std:: filesystem :: path & p,

const std:: filesystem :: path & base,

std:: error_code & ec ) ;
(6) (C++17부터)
1) 반환 relative ( p, current_path ( ) , ec ) .
2,3) p base 에 대한 상대 경로로 반환합니다. 다른 처리 전에 p base 모두에 대해 심볼릭 링크를 해결하고 정규화합니다. 효과적으로 std:: filesystem :: weakly_canonical ( p ) . lexically_relative ( std:: filesystem :: weakly_canonical ( base ) ) 또는 std:: filesystem :: weakly_canonical ( p, ec ) . lexically_relative ( std:: filesystem :: weakly_canonical ( base, ec ) ) 를 반환합니다. 단, 오류 코드 형태는 오류 발생 시 첫 번째 오류 발생 지점에서 path ( ) 를 반환합니다.
4) 반환값 proximate ( p, current_path ( ) , ec ) .
5,6) 효과적으로 반환합니다 std:: filesystem :: weakly_canonical ( p ) . lexically_proximate ( std:: filesystem :: weakly_canonical ( base ) ) 또는 std:: filesystem :: weakly_canonical ( p, ec ) . lexically_proximate ( std:: filesystem :: weakly_canonical ( base, ec ) ) , 단 에러 코드 형태는 첫 번째 에러 발생 시(있는 경우) path ( ) 를 반환합니다.

목차

매개변수

p - 기존 경로
base - 기준 경로, 이에 대해 p 가 상대/근접 경로로 생성됨
ec - 오류 상태를 저장할 오류 코드

반환값

1) p current_path ( ) 에 대해 상대 경로로 변환됨.
2,3) p base 에 대해 상대적으로 만듭니다.
4) p current_path ( ) 에 대해 근접하게 설정되었습니다.
5,6) p base 에 근접하게 만듭니다.

예외

noexcept 로 표시되지 않은 모든 오버로드는 메모리 할당이 실패할 경우 std::bad_alloc 을(를) throw할 수 있습니다.

2,5) 기본 OS API 오류 발생 시 std::filesystem::filesystem_error 를 발생시킵니다. 이는 p 를 첫 번째 경로 인수로, base 를 두 번째 경로 인수로, OS 오류 코드를 오류 코드 인수로 사용하여 구성됩니다.
1,3,4,6) OS API 호출이 실패할 경우 std:: error_code & 매개변수를 OS API 오류 코드로 설정하고, 오류가 발생하지 않을 경우 ec. clear ( ) 를 실행합니다.

예제

#include <filesystem>
#include <iostream>
void show(std::filesystem::path x, std::filesystem::path y)
{
    std::cout << "x:\t\t " << x << "\ny:\t\t " << y << '\n'
              << "relative(x, y):  "
              << std::filesystem::relative(x, y) << '\n'
              << "proximate(x, y): "
              << std::filesystem::proximate(x, y) << "\n\n";
}
int main()
{
    show("/a/b/c", "/a/b");
    show("/a/c", "/a/b");
    show("c", "/a/b");
    show("/a/b", "c");
}

가능한 출력:

x:               "/a/b/c"
y:               "/a/b"
relative(x, y):  "c"
proximate(x, y): "c"
x:               "/a/c"
y:               "/a/b"
relative(x, y):  "../c"
proximate(x, y): "../c"
x:               "c"
y:               "/a/b"
relative(x, y):  ""
proximate(x, y): "c"
x:               "/a/b"
y:               "c"
relative(x, y):  ""
proximate(x, y): "/a/b"

참고 항목

(C++17)
경로를 나타냄
(클래스)
(C++17)
절대 경로를 구성함
(함수)
정규 경로를 구성함
(함수)
경로를 정규 형태로 변환함
경로를 상대 형태로 변환함
경로를 근사 형태로 변환함
( std::filesystem::path 의 public 멤버 함수)