Namespaces
Variants

std::wstring_convert<Codecvt,Elem,Wide_alloc,Byte_alloc>:: wstring_convert

From cppreference.net
wstring_convert ( ) : wstring_convert ( new Codecvt ) { }
(1)
explicit wstring_convert ( Codecvt * pcvt ) ;
(2)
wstring_convert ( Codecvt * pcvt, state_type state ) ;
(3)
explicit wstring_convert ( const byte_string & byte_err,
const wide_string & wide_err = wide_string ( ) ) ;
(4)
wstring_convert ( const std:: wstring_convert & ) = delete ;
(5) (C++14부터)
오버로드 데이터 멤버
byte_err_string wide_err_string cvtptr cvtstate cvtcount
(1) 기본 초기화 new Codecvt 기본 초기화 초기화되지 않음
(2) pcvt
(3) state
(4) byte_err wide_err new Codecvt state_type ( )
2,3) 만약 pcvt 가 널 포인터인 경우, 동작은 정의되지 않습니다.
5) 복사 생성자가 삭제되었으며, wstring_convert CopyConstructible 을 만족하지 않습니다.

매개변수

pcvt - 변환 패싯에 대한 포인터
state - 변환 시프트 상태의 초기값
byte_err - 오류 시 표시할 좁은 문자열
wide_err - 오류 시 표시할 넓은 문자열

예제

#include <codecvt>
#include <locale>
#include <utility>
// 로케일 바인딩 패싯을 wstring/wbuffer 변환에 적용하기 위한 유틸리티 래퍼
template<class Facet>
struct deletable_facet : Facet
{
    using Facet::Facet; // 생성자 상속
    ~deletable_facet() {}
};
int main()
{
    // UTF-16le / UCS4 변환
    std::wstring_convert
        <std::codecvt_utf16<char32_t, 0x10ffff, std::little_endian>> u16to32;
    // 사용자 정의 메시지를 사용한 UTF-8 / 와이드 문자열 변환
    std::wstring_convert<std::codecvt_utf8<wchar_t>> u8towide("Error!", L"Error!");
    // GB18030 / 와이드 문자열 변환 패싯
    using F = deletable_facet<std::codecvt_byname<wchar_t, char, std::mbstate_t>>;
    std::wstring_convert<F> gbtowide(new F("zh_CN.gb18030"));
}

결함 보고서

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

DR 적용 대상 게시된 동작 올바른 동작
LWG 2175 C++11 pcvt 가 널 포인터일 수 있음 이 경우 동작은 정의되지 않음
LWG 2176 C++11 단일 인수를 받는 생성자가 암시적이었음 명시적으로 변경됨
P0935R0 C++11 기본 생성자가 명시적이었음 암시적으로 변경됨