C++Builder C++ 유니코드 문자열 리터럴(Unicode String Literal) 활용 방법
2021.01.22 15:30
C++은 다양한 문자열과 타입을 지원합니다. 그리고 각 유형들을 리터럴 값으로 표현 방법들도 제시하고 있죠.
문자열 리터럴은 일련의 문자들을 표현할 수 있습니다. 큰 따옴표(“) 사이에 문자열을 입력해서 말이죠. 문자열 리터럴에는 다음과 같은 종류가 있습니다:
- Narrow String 리터럴
- UTF-8 encoded strings
- Wide String 리터럴
- char16_t와 char32_t (C++11)
- Raw String 리터럴 (C++11)
- std::string 리터럴 (C++14)
C++11에서는 유니코드 문자열 리터럴들을 조합할 수 있는 새로운 타입을 선보였습니다. 대표적으로 char16_t (16비트 유니코드)와 char32_t (32비트 유니코드)가 있죠. 그리고 리터럴 앞에 u8, u, U를 추가해 크기와 인코딩을 지정할 수 있게 되었죠. 대표적으로 UTF-8, UTF-16, UTF-32가 있습니다. 하지만 플랫폼을 변경하는 경우에는 런타임 변환이 필요합니다.
1
2
|
auto s3 = u“hello”; // const char16_t*
auto s4 = U“hello”; // const char32_t*
|
cs |
이 외에도 유니코드 이스케이프 시퀀스(Unicode escape sequences)를 직접 사용해 인코딩 걱정없이 특정 기호를 코드화 할 수도 있습니다.
1
2
|
const char16_t* s16 = u“u00DA”;
const char32_t* s32 = U“u00DA”;
|
cs |