¿Cómo uso los caracteres Unicode de 3 y 4 bytes con cadenas estándar de C ++?
En el estándar C ++ tenemoschar
ywchar_t
para almacenar personajes.char
puede almacenar valores entre0x00 y0xFF. Ywchar_t
puede almacenar valores entre0x0000
y0xFFFF
. std::string
usoschar
, por lo que puede almacenar caracteres de 1 byte solamente.std::wstring
usoswchar_t
, por lo que puede almacenar caracteres de hasta 2 bytes de ancho. Esto es lo que sé acerca de las cadenas en C ++. Por favor, corrígeme si dije algo mal hasta este punto.
Yo leoEl artículo para UTF-8. en Wikipedia, y aprendí que algunos caracteres Unicode consumen espacio de hasta 4 bytes. Por ejemplo, el carácter chino. tiene un punto de código Unicode0x24B62, que consume 3 bytes de espacio en la memoria.
¿Hay un contenedor de cadenas STL para tratar con este tipo de caracteres? Estoy buscando algo comostd::string32
. Además, tuvimosmain()
para el punto de entrada ASCII,wmain()
para el punto de entrada con soporte de caracteres de 16 bits; ¿Qué punto de entrada utilizamos para el código compatible con Unicode de 3 y 4 bytes?
¿Puedes por favor agregar un pequeño ejemplo?
(Mi sistema operativo: Windows 7 x64)