std::wstring_convert<Codecvt,Elem,Wide_alloc,Byte_alloc>:: wstring_convert
From cppreference.net
<
cpp
|
locale
|
wstring convert
|
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
가 널 포인터인 경우, 동작은 정의되지 않습니다.
매개변수
| 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 | 기본 생성자가 명시적이었음 | 암시적으로 변경됨 |