0

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

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

4

2 回答 2

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/

于 2010-02-18T10:05:06.637 回答
1

这取决于您使用的字符串类型。如果没有类型(只是已知包含 UCS-2 编码中的字符串的内存缓冲区),您必须知道它是如何表示的。它可以有一个前置长度计数,或者像普通的旧char *“C 字符串”一样以 0 结尾。

于 2010-02-18T09:57:37.243 回答