C++ 11은 새로운 문자열 리터럴 접두사 집합을 도입합니다 (사용자 정의 접미사도 허용). 이 외에도 유니 코드 이스케이프 시퀀스를 직접 사용하여 인코딩 걱정없이 특정 심볼을 코딩 할 수 있습니다.유니 코드 문자열 리터럴
const char16_t* s16 = u"\u00DA";
const char32_t* s32 = U"\u00DA";
는하지만 나뿐만 아니라 wchar_t
문자열 리터럴에 유니 코드 이스케이프 시퀀스를 사용할 수 있습니까? 이것이 가능하지 않다면 그것은 결함 인 것처럼 보일 것입니다.
const wchar_t* sw = L"\u00DA";
물론 특정 플랫폼에 무엇 wchar_t
에 따라, 다른 모든 효과 것 sw[0]
의 정수 값이 휴대용해야, 아니?
난 SW '의 값이 [0]'wchar_t' 만의 범위에 특정 플랫폼 무엇 '에 따라 판단 'wchar_t'의 크기는 얼마입니까? 나는. '\ u00DA'는 U + 00DA의 유니 코드 인코딩 (UTF-8, UTF-16, UTF-32)을 항상 가져야합니다. – bames53
실제로 위 내용이 잘못되었습니다. 구현은 범용 문자 이름을 리터럴 문자처럼 취급해야합니다. 따라서 구현시 문자열 리터럴의 문자를 실행 문자 집합으로 변환하면 UCN에서도 마찬가지입니다. UCN이 유니 코드 리터럴 (예 : u8 "\ u00DA") 안에있는 경우 UTF 인코딩 만 보장됩니다. – bames53