如何在C ++中计算UCS-2字符串的长度及其大小?

时间:2010-02-18 09:49:36

标签: c++ ucs2

我有UCS-2编码的字符串。我需要将此字符串复制到另一个UCS-2字符串。在复制之前,我需要计算用于记忆分配的UCS-2字符串的长度。

如何计算UCS-2字符串的长度?

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结尾。