unicode char或multibyte char:哪种类型更有效?为什么?

时间:2011-11-27 18:23:07

标签: c++ unicode multibyte

之间有什么区别
wchar_t arry[] 

char arry[] 

类型初始化。
对于Unicode我知道的角色我知道它有几种编码格式。其中windows使用UTF-16。这意味着大多数字符都是16位。但在char类型中,一个字符是8位。这是否意味着我们可以在wchar类型中存储2字节?

哪种类型效率更高?为什么?

2 个答案:

答案 0 :(得分:0)

两者都是Windows上的可变长度(wchar_t意味着UTF-16),后者对于大多数测试都是浪费。即使在CJK中,通过网络传输的文本也是一半。

The most portable and easiest way to support Unicode is to use UTF-8 (char)。转换为UTF-16以便将字符串传递给Windows API时,这意味着性能损失很小,但与系统调用相比,它相对较小。

答案 1 :(得分:-1)

Multibyte是一种可变宽度编码。使用英语时,您将使用1个字节,但对于非常罕见的字符集,通常使用2个或更多(最多6个字节)。因此,就内存使用而言,多字节通常更好。 但是,当您需要知道字符串中有多少字符时,在unicode中,您只需将字符串长度除以2(sizeof(wchar_t))。在多字节中,你必须遍历整个字符串并计算字母数。 见multibyte