Jak używać 3 i 4-bajtowych znaków Unicode w standardowych łańcuchach C ++?
W standardowym C ++ mamychar
iwchar_t
do przechowywania znaków.char
może przechowywać wartości między0x00 i0xFF. Iwchar_t
może przechowywać wartości między0x0000
i0xFFFF
. std::string
używachar
, więc może przechowywać tylko znaki 1-bajtowe.std::wstring
używawchar_t
, więc może przechowywać znaki o szerokości do 2 bajtów. To jest to, co wiem o ciągach znaków w C ++. Popraw mnie, jeśli do tej pory powiedziałem coś złego.
czytamartykuł dotyczący UTF-8 w Wikipedii i dowiedziałem się, że niektóre znaki Unicode zajmują do 4 bajtów miejsca. Na przykład chiński znak ma punkt kodowy Unicode0x24B62, który zajmuje 3 bajty miejsca w pamięci.
Czy istnieje kontener STL do obsługi takich znaków? Szukam czegoś takiegostd::string32
. Mieliśmy teżmain()
dla punktu wejścia ASCII,wmain()
dla punktu wejścia z obsługą znaków 16-bitowych; Jakiego punktu wejścia używamy dla 3 i 4-bajtowego kodu obsługiwanego przez Unicode?
Czy możesz dodać mały przykład?
(My OS: Windows 7 x64)