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)

questionAnswers(5)

yourAnswerToTheQuestion