首頁  >  文章  >  後端開發  >  如何在 C 中計算 UTF-8 字串的實際長度?

如何在 C 中計算 UTF-8 字串的實際長度?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-26 01:26:28701瀏覽

How to Calculate the Actual Length of a UTF-8 String in C  ?

計算UTF-8 字串的實際長度

在使用UTF-8 編碼的std::string 物件時,開發人員經常遇到str.length() 傳回的值與字串中的實際字元數之間的差異。這是因為 str.length() 只是計算字串中的位元組數,沒有考慮用於表示 UTF-8 字元的多位元組編碼。

UTF-8 編碼定義了一組位元組序列用於表示 Unicode 字元。每個字元可由一到四個位元組表示,具體取決於其 Unicode 代碼點。這些位元組序列的結構如下:

  • 1 位元組序列 (0x00-0x7F): 直接表示 ASCII 字元。
  • 2 位元組序列 (0x80-0xBF): 表示碼位元從 0x0080 到 0x07FF 的字元。
  • 3 位元組序列 (0xC0-0xDF): 表示碼位從 0x0800 到 0x0800 的字元0xFFFF。
  • 4 位元組序列 (0xE0-0xFF): 表示代碼點從 0x10000 到 0x10FFFF 的字元。

計算實際長度

UTF-8 編碼字串的實際長度可以透過計算字串中第一位元組的數量來決定,這些位元組是與模式10xxxxxx 不符的位元組。此模式表示連續字節,用於表示多字節序列。

程式碼片段

<code class="cpp">int len = 0;
while (*s) len += (*s++ & 0xc0) != 0x80;</code>

在此程式碼中,while 循環迭代字串,對於遇到的每個第一個位元組,長度len 計數加1。

以上是如何在 C 中計算 UTF-8 字串的實際長度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn