2017-12-07 4 views
0

C++ 11 이상에서는 문자열 리터럴에 u8 접두사를 사용하면 char (바이트) 시퀀스를 UTF-8로 인코딩 할 수 있습니다.출력 UTF-8 (u8) std :: string

어떻게 이러한 시퀀스를 std::ostream으로 출력합니까? std::ostreamconst char * 또는 std:string이 기본 인코딩이 아닌 UTF-8로 인코딩 된 문자를 포함한다고 말하면 어떻게됩니까?

+0

우울증, 구강 및 분노의 혼합으로, [표준 C++에서의 유니 코드 지원은 끔찍합니다] (https://stackoverflow.com/a/17106065/545127) 배우고 있습니다. – Raedwald

답변

1

그렇지 않습니다. 스트림은 텍스트의 인코딩이 무엇인지 알거나 신경 쓰지 않습니다. 그 이름에도 불구하고 charstd:ostream으로 처리되지 않으며 플랫폼 인코딩으로 인코딩 된 문자를 포함합니다. 그것은 서면 쓸 바이트로 char을 처리해야합니다. 이것을 바꿔주는 패싯이 없다고 가정하면 주어진대로 "텍스트"(바이트 시퀀스)를 씁니다 (가능하면 \n 번역을 수행하지 않습니다). UTF-8을 따르는 문자를 작성하면 출력으로 끝납니다.

+0

'std :: ostream'은 플랫폼 인코딩의 문자 시퀀스가 ​​아니라'std : string'을 바이트 시퀀스 ('char' 당 1 바이트)로 취급한다고 말하고 있습니까? – Raedwald

+0

@ Raedwald : 예. 그것은'char' 시퀀스입니다. 그 밖의 무엇을 입력으로 처리하겠습니까? –