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