我有一個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字符串」一樣。