首頁 > 後端開發 > C++ > 如何在C中準確確定UTF-8編碼字串的長度?

如何在C中準確確定UTF-8編碼字串的長度?

Barbara Streisand
發布: 2024-10-26 05:58:02
原創
621 人瀏覽過

How to Accurately Determine the Length of a UTF-8 Encoded String in C  ?

確定UTF-8 編碼字串長度

在C 中,std::string 編碼可能會有所不同,並且使用length () 函數UTF-8 編碼的字串可能會產生不準確的實際長度表示。要確定正確的長度,請考慮以下位元組序列模式:

0x00000000 - 0x0000007F:
       0xxxxxxx

0x00000080 - 0x000007FF:
       110xxxxx 10xxxxxx

0x00000800 - 0x0000FFFF:
       1110xxxx 10xxxxxx 10xxxxxx

0x00010000 - 0x001FFFFF:
       11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
登入後複製

要計算UTF-8 編碼字串的實際長度:

  1. 將變數len 初始化為0 .
  2. 逐個字元地遍歷字串。
  3. 對於每個字符,檢查它是否遵循單字節字符 (0xxxxxxx) 的字節序列模式。
  4. 如果確實如此,將 len 加 1。
  5. 否則,跳過當前和下一個位元組。

以下程式碼片段說明了實作:

<code class="cpp">int len = 0;
const char *s = str.c_str(); // convert to C-style string
while (*s) len += (*s++ & 0xc0) != 0x80;</code>
登入後複製

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板