Namespaces
Variants

std::filesystem:: u8path

From cppreference.net
헤더 파일에 정의됨 <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)
경로를 나타냄
(클래스)