Namespaces
Variants

std::wbuffer_convert<Codecvt,Elem,Tr>:: wbuffer_convert

From cppreference.net
wbuffer_convert ( ) : wbuffer_convert ( nullptr ) { }
(1)
explicit wbuffer_convert ( std:: streambuf * bytebuf,

Codecvt * pcvt = new Codecvt,

state_type state = state_type ( ) ) ;
(2)
wbuffer_convert ( const std:: wbuffer_convert & ) = delete ;
(3) (C++14부터)
오버로드 데이터 멤버
bufptr cvtptr cvtstate
(1) nullptr new Codecvt state_type ( )
(2) bytebuf pcvt state
2) 만약 pcvt 가 널 포인터인 경우, 동작은 정의되지 않습니다.
3) 복사 생성자가 삭제되었으며, wbuffer_convert CopyConstructible 요구 사항을 충족하지 않습니다.

매개변수

bytebuf - 기본 버퍼에 대한 포인터
pcvt - 독립형(로캘에 의해 관리되지 않는) 패싯에 대한 포인터
state - 문자 변환 상태의 초기값

예제

#include <codecvt>
#include <iostream>
#include <locale>
#include <sstream>
int main()
{
    // UTF-8 문자열 스트림을 UCS4 wbuffer_convert로 래핑
    std::stringbuf utf8buf("z\u00df\u6c34\U0001f34c");
                       // 또는 "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9f\x8d\x8c"
                       // 또는 u8"zß水🍌"
    std::wbuffer_convert<std::codecvt_utf8<wchar_t>> conv_in(&utf8buf);
    std::wistream ucsbuf(&conv_in);
    std::cout << "UTF-8 stringbuf에서 wbuffer_convert를 통해 읽기: "
              << std::hex << std::showbase;
    for (wchar_t c; ucsbuf.get(c);)
        std::cout << static_cast<std::wint_t>(c) << ' ';
    // UTF-8 인식 std::cout을 UCS4 wbuffer_convert로 래핑하여 UCS4 출력
    std::wbuffer_convert<std::codecvt_utf8<wchar_t>> conv_out(std::cout.rdbuf());
    std::wostream out(&conv_out);
    std::cout << "\nUCS4 데이터를 wbuffer_convert를 통해 std::cout으로 전송: ";
    out << L"z\u00df\u6c34\U0001f34c\n";
}

출력:

UTF-8 stringbuf에서 wbuffer_convert를 통해 읽기: 0x7a 0xdf 0x6c34 0x1f34c 
UCS4 데이터를 wbuffer_convert를 통해 std::cout으로 전송: zß水🍌

결함 보고서

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

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