計算UTF-8 字串的實際長度
在使用UTF-8 編碼的std::string 物件時,開發人員經常遇到str.length() 傳回的值與字串中的實際字元數之間的差異。這是因為 str.length() 只是計算字串中的位元組數,沒有考慮用於表示 UTF-8 字元的多位元組編碼。
UTF-8 編碼定義了一組位元組序列用於表示 Unicode 字元。每個字元可由一到四個位元組表示,具體取決於其 Unicode 代碼點。這些位元組序列的結構如下:
計算實際長度
UTF-8 編碼字串的實際長度可以透過計算字串中第一位元組的數量來決定,這些位元組是與模式10xxxxxx 不符的位元組。此模式表示連續字節,用於表示多字節序列。
程式碼片段
<code class="cpp">int len = 0; while (*s) len += (*s++ & 0xc0) != 0x80;</code>
在此程式碼中,while 循環迭代字串,對於遇到的每個第一個位元組,長度len 計數加1。
以上是如何在 C 中計算 UTF-8 字串的實際長度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!