std::filesystem:: u8path
|
헤더 파일에 정의됨
<filesystem>
|
||
|
template
<
class
Source
>
std:: filesystem :: path u8path ( const Source & source ) ; |
(1) |
(C++17부터)
(C++20부터 사용 중단됨) |
|
template
<
class
InputIt
>
std:: filesystem :: path u8path ( InputIt first, InputIt last ) ; |
(2) |
(C++17부터)
(C++20부터 사용 중단됨) |
UTF-8로 인코딩된 시퀀스로부터 경로
p
를 생성합니다. 시퀀스는
char
형식의
또는
char8_t
형식의
(C++20부터)
데이터로 제공되며,
std::string
이나
std::string_view
, 또는 null로 종료된 다중 바이트 문자열, 혹은
[
first, last
)
반복자 쌍으로 제공될 수 있습니다.
-
만약
path::value_type이 char 이고 네이티브 인코딩이 UTF-8인 경우, path ( source ) 또는 path ( first, last ) 처럼 직접 경로를 생성합니다. 참고: 이는 Linux와 같은 유니코드를 사용하는 POSIX 시스템의 일반적인 상황입니다. -
그렇지 않고
path::value_type이 wchar_t 이고 네이티브 인코딩이 UTF-16인 경우(Windows에서의 상황), 또는path::value_type이 char16_t (네이티브 인코딩이 UTF-16으로 보장됨) 또는 char32_t (네이티브 인코딩이 UTF-32로 보장됨)인 경우, 먼저 UTF-8 문자 시퀀스를path::string_type타입의 임시 문자열tmp로 변환한 다음 path ( tmp ) 처럼 새로운 경로를 생성합니다. -
그 외의 경우(비 UTF-8 narrow 문자 인코딩과 비 UTF-16
wchar_t
의 경우), 먼저 UTF-8 문자 시퀀스를
std::
u32string
타입의 임시 UTF-32 인코딩 문자열
tmp로 변환한 다음 path ( tmp ) 처럼 새로운 경로를 생성합니다(이는 비유니코드 멀티바이트 또는 싱글바이트 인코딩 파일 시스템을 가진 POSIX 시스템에서 선택되는 경로입니다).
목차 |
매개변수
| source | - | UTF-8로 인코딩된 std::string , std::string_view , 널 종료 멀티바이트 문자열에 대한 포인터, 또는 널 종료 멀티바이트 문자열을 가리키는 char 값 타입을 가진 입력 반복자 |
| first, last | - | UTF-8로 인코딩된 문자 시퀀스를 지정하는 LegacyInputIterator s 쌍 |
| 타입 요구사항 | ||
-
InputIt
는
LegacyInputIterator
요구사항을 충족해야 합니다.
|
||
-
Source
또는
InputIt
의 값 타입은
char
또는
char8_t
이어야 합니다.
(C++20부터)
|
||
반환값
입력 문자열에서 UTF-8에서 파일 시스템의 기본 문자 인코딩으로 변환 후 구성된 경로입니다.
예외
메모리 할당이 실패할 경우 std::bad_alloc 을 던질 수 있습니다.
참고 사항
네이티브 경로 형식이 일반 경로 형식과 다른 시스템(Windows나 POSIX 시스템은 해당되지 않는 OS)에서, 이 함수의 인수가 일반 형식을 사용하는 경우 네이티브 형식으로 변환됩니다.
예제
#include <cstdio> #ifdef _MSC_VER #include <fcntl.h> #include <io.h> #else #include <clocale> #include <locale> #endif #include <filesystem> #include <fstream> int main() { #ifdef _MSC_VER _setmode(_fileno(stderr), _O_WTEXT); #else std::setlocale(LC_ALL, ""); std::locale::global(std::locale("")); #endif std::filesystem::path p(u8"要らない.txt"); std::ofstream(p) << "File contents"; // LWG2676 이전에는 operator string_type()을 사용함 // MSVC에서 string_type은 wstring이며, // 비표준 확장으로 인해만 작동함 // LWG2676 이후에는 새로운 fstream 생성자를 사용함 // 기본 문자열 표현은 OS별 API와 함께 사용 가능 #ifdef _MSC_VER if (std::FILE* f = _wfopen(p.c_str(), L"r")) #else if (std::FILE* f = std::fopen(p.c_str(), "r")) #endif { for (int ch; (ch = fgetc(f)) != EOF; std::putchar(ch)) {} std::fclose(f); } std::filesystem::remove(p); }
가능한 출력:
File contents
참고 항목
|
(C++17)
|
경로를 나타냄
(클래스) |