Namespaces
Variants

std::filesystem::path:: path

From cppreference.net
path ( ) noexcept ;
(1) (C++17부터)
path ( const path & p ) ;
(2) (C++17부터)
path ( path && p ) noexcept ;
(3) (C++17부터)
path ( string_type && source, format fmt = auto_format ) ;
(4) (C++17부터)
template < class Source >
path ( const Source & source, format fmt = auto_format ) ;
(5) (C++17부터)
template < class InputIt >
path ( InputIt first, InputIt last, format fmt = auto_format ) ;
(6) (C++17부터)
template < class Source >
path ( const Source & source, const std:: locale & loc, format fmt = auto_format ) ;
(7) (C++17부터)
template < class InputIt >
path ( InputIt first, InputIt last, const std:: locale & loc, format fmt = auto_format ) ;
(8) (C++17부터)

새로운 path 객체를 생성합니다.

1) 빈 경로를 생성합니다.
2) 복사 생성자. 네이티브 및 일반 형식 모두에서 경로명이 p 와 동일한 경로를 생성합니다.
3) 이동 생성자. 네이티브 및 제네릭 형식 모두에서 경로명이 p 와 동일한 경로를 생성하며, p 는 유효하지만 지정되지 않은 상태로 남게 됩니다.
4-6) fmt 에 지정된 방식으로 해석되는 형식의 문자 시퀀스로부터 경로를 생성합니다. 이 문자 시퀀스는 source (4,5) 에서 제공되며, 이는 널 종료 문자/와이드 문자 시퀀스에 대한 포인터나 입력 반복자, std::basic_string 또는 std::basic_string_view 이거나, 입력 반복자 쌍 [ first , last )으로 표현됩니다 (6) . 문자 타입으로 char , char8_t , (C++20부터) char16_t , char32_t , wchar_t 가 허용되며, 기본 문자 집합으로의 변환 방법은 source 에 사용된 문자 타입에 따라 달라집니다.
  • 소스 문자 타입이 char 인 경우, 소스의 인코딩은 기본 네로우 인코딩으로 가정됩니다(따라서 POSIX 시스템에서는 변환이 발생하지 않습니다).
  • 소스 문자 타입이 char8_t 인 경우, UTF-8에서 기본 파일 시스템 인코딩으로의 변환이 사용됩니다.
(C++20부터)
  • 소스 문자 타입이 char16_t 인 경우, UTF-16에서 기본 파일 시스템 인코딩으로의 변환이 사용됩니다.
  • 소스 문자 타입이 char32_t 인 경우, UTF-32에서 기본 파일 시스템 인코딩으로의 변환이 사용됩니다.
  • 소스 문자 타입이 wchar_t 인 경우, 입력이 기본 와이드 인코딩으로 가정됩니다(따라서 Windows에서는 변환이 발생하지 않습니다).
7,8) 문자 시퀀스( fmt 에 의해 지정된 형식으로 해석됨)로부터 경로를 생성합니다. source (7) 에서 제공되며, 이는 널 종료 문자 시퀀스에 대한 포인터나 입력 반복자, std::string , std::string_view , 또는 입력 반복자 쌍 [ first , last )으로 표현됩니다 (8) . 허용되는 유일한 문자 타입은 char 입니다. loc 을 사용하여 문자 인코딩 변환을 수행합니다. value_type wchar_t 인 경우, loc std:: codecvt < wchar_t , char , std:: mbstate_t > 패싯을 사용하여 와이드 문자로 변환합니다. 그렇지 않으면, 먼저 std:: codecvt < wchar_t , char , std:: mbstate_t > 패싯을 사용하여 와이드 문자로 변환한 다음, loc std:: codecvt < wchar_t ,value_type > 패싯을 사용하여 파일시스템 기본 문자 타입으로 변환합니다.

(5) (7) 은 다음 조건이 모두 충족될 때에만 오버로드 해결에 참여합니다: Source path 가 동일한 타입이 아니며, 다음 중 하나를 만족하는 경우:

목차

매개변수

p - 복사할 경로
source - std::basic_string , std::basic_string_view , 널 종료 문자 문자열에 대한 포인터, 또는 널 종료 문자 시퀀스를 가리키는 문자 값 타입을 가진 입력 반복자 (문자 타입은 오버로드 (7) 에 대해 char 이어야 함)
first, last - 문자 시퀀스를 지정하는 LegacyInputIterator s
fmt - 경로 이름 형식이 어떻게 해석될지 지정하는 path::format 타입의 열거자
loc - 인코딩 변환에 사용할 로캘
타입 요구사항
-
InputIt LegacyInputIterator 요구사항을 충족해야 함.
-
InputIt 의 값 타입은 오버로드 (6) 를 사용하기 위해 문자 타입 char , wchar_t , char8_t , (since C++20) char16_t char32_t 중 하나여야 함.
-
InputIt 의 값 타입은 오버로드 (8) 를 사용하기 위해 char 이어야 함.

예외

2,4-8) 구현 시 정의된 예외를 발생시킬 수 있습니다.

참고 사항

유니코드 문자열로부터 이식 가능한 경로명 생성을 위해서는 u8path 를 참조하십시오.

(C++20까지)

path 생성자는 소스가 char8_t 시퀀스일 때 UTF-8 문자열로부터의 생성을 지원합니다.

(C++20부터)

예제

#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
int main()
{
    fs::path p1 = "/usr/lib/sendmail.cf"; // 이식 가능한 형식
    fs::path p2 = "C:\\users\\abcdef\\AppData\\Local\\Temp\\"; // 기본 형식
    fs::path p3 = U"D:/猫.txt"; // UTF-32 문자열
    fs::path p4 = u8"~/狗.txt"; // UTF-8 문자열
    std::cout << "p1 = " << p1 << '\n'
              << "p2 = " << p2 << '\n'
              << "p3 = " << p3 << '\n'
              << "p4 = " << p4 << '\n';
}

출력:

p1 = "/usr/lib/sendmail.cf"
p2 = "C:\\users\\abcdef\\AppData\\Local\\Temp\\"
p3 = "D:/猫.txt"
p4 = "~/狗.txt"

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 3244 C++17 Source path 가 될 수 없다는 제약 조건이 누락됨 추가됨

참고 항목

(C++17) (C++20에서 사용 중단됨)
UTF-8 인코딩된 소스로부터 path 를 생성합니다
(함수)