如何声明一个多字节字符数组,其中每个字符代表3或4个字节?
我知道我可以做:char var[] = "AA";
可以写到存储器6161
,而我可以做wchar var[] = L"AA";
可以写00610061
。如何在C或C ++中声明更宽的字符数组?
还有L
之类的其他前缀来指示编译器这样做吗?
答案 0 :(得分:6)
C和C ++都提供char32_t
。 C char32_t
中的typedef与uint_least32_t
类型相同。在C++ char32_t
中,其大小,符号和对齐方式与std::uint_least32_t
相同,但类型不同。
两者都可以像
一样使用char32_t string[] = U"some text";
答案 1 :(得分:1)
您可以尝试一下,只要您不介意手动键入每个字符:
int characters[3] = { 'h', 'e', 'y' };
您还可以在字符串文字前使用大写字母U以获得UTF-32:
char32_t characters[] = U"hey";
答案 2 :(得分:1)
谈论多字节字符数组时,最好的选择是使用UTF8编码。这样,所有标准字符串库函数将继续起作用,并且ASCII表示保持不变。