std::filesystem::path:: path
From cppreference.net
<
cpp
|
filesystem
|
path
|
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 시스템에서는 변환이 발생하지 않습니다).
|
(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
가 동일한 타입이 아니며, 다음 중 하나를 만족하는 경우:
-
Source가 std::basic_string 또는 std::basic_string_view 의 특수화(specialization)이거나, 또는 - std:: iterator_traits < std:: decay_t < Source >> :: value_type 이 유효하며 const 한정이 가능한 인코딩 문자 타입( char , char8_t , (C++20부터) char16_t , char32_t , 또는 wchar_t )을 나타내는 경우.
목차 |
매개변수
| 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)
구현 시 정의된 예외를 발생시킬 수 있습니다.
참고 사항
|
유니코드 문자열로부터 이식 가능한 경로명 생성을 위해서는
|
(C++20까지) |
|
|
(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
를 생성합니다
(함수) |