C++ 11 이상에서는 문자열 리터럴에 u8
접두사를 사용하면 char
(바이트) 시퀀스를 UTF-8로 인코딩 할 수 있습니다.출력 UTF-8 (u8) std :: string
어떻게 이러한 시퀀스를 std::ostream
으로 출력합니까? std::ostream
const char *
또는 std:string
이 기본 인코딩이 아닌 UTF-8로 인코딩 된 문자를 포함한다고 말하면 어떻게됩니까?
C++ 11 이상에서는 문자열 리터럴에 u8
접두사를 사용하면 char
(바이트) 시퀀스를 UTF-8로 인코딩 할 수 있습니다.출력 UTF-8 (u8) std :: string
어떻게 이러한 시퀀스를 std::ostream
으로 출력합니까? std::ostream
const char *
또는 std:string
이 기본 인코딩이 아닌 UTF-8로 인코딩 된 문자를 포함한다고 말하면 어떻게됩니까?
그렇지 않습니다. 스트림은 텍스트의 인코딩이 무엇인지 알거나 신경 쓰지 않습니다. 그 이름에도 불구하고 char
은 std:ostream
으로 처리되지 않으며 플랫폼 인코딩으로 인코딩 된 문자를 포함합니다. 그것은 서면 쓸 바이트로 char
을 처리해야합니다. 이것을 바꿔주는 패싯이 없다고 가정하면 주어진대로 "텍스트"(바이트 시퀀스)를 씁니다 (가능하면 \n
번역을 수행하지 않습니다). UTF-8을 따르는 문자를 작성하면 출력으로 끝납니다.
'std :: ostream'은 플랫폼 인코딩의 문자 시퀀스가 아니라'std : string'을 바이트 시퀀스 ('char' 당 1 바이트)로 취급한다고 말하고 있습니까? – Raedwald
@ Raedwald : 예. 그것은'char' 시퀀스입니다. 그 밖의 무엇을 입력으로 처리하겠습니까? –
우울증, 구강 및 분노의 혼합으로, [표준 C++에서의 유니 코드 지원은 끔찍합니다] (https://stackoverflow.com/a/17106065/545127) 배우고 있습니다. – Raedwald