我有一个UCS-2编码的字符串。我需要将此字符串复制到另一个UCS-2字符串。复制之前,我需要计算UCS-2字符串的长度以进行Memeory分配。如何在C++中计算UCS-2字符串的长度及其大小?
如何计算UCS-2字符串的长度?
我有一个UCS-2编码的字符串。我需要将此字符串复制到另一个UCS-2字符串。复制之前,我需要计算UCS-2字符串的长度以进行Memeory分配。如何在C++中计算UCS-2字符串的长度及其大小?
如何计算UCS-2字符串的长度?
UCS2不携带有关字符串长度本身的信息。你的原始字符串表示要么是以0结尾的,在这种情况下,你可以检查一个0代码单元(即一个16位的0值),或者它不是0结尾的,在这种情况下,你需要一些out-of-关于字符串长度的带区信息(例如单独存储的缓冲区大小)。
一般来说,UCS 2是UTF-16的一个子集(http://www.unicode.org/faq/basic_q.html#14)。因此,您应该可以使用UTF-16工具,例如ICU库http://site.icu-project.org/。
这取决于您使用的字符串类型。如果没有类型(只是一个已知包含UCS-2编码字符串的内存缓冲区),则必须知道它是如何表示的。它可以有一个前置长度计数,或者像0 0终止,就像普通的旧的char *
“C字符串”一样。