如何遍歷中文字符串?
掃描二維碼
隨時隨地手機看文章
今天和大家分享下如何遍歷中文字符串,主要是如何打印中文字符,因為中文字符串每個字符占用不只一個字節(jié)的空間,如果我們逐個字節(jié)遍歷,會出現(xiàn)奇怪的結果。而UTF-8編碼寫的中文字符是有特定結構的,我們可以按照它的規(guī)則去遍歷打印。
下面是詳情:
前提:UTF-8編碼。
先看下面的代碼和運行結果:
上面代碼定義了一個9個中文的字符串,但打印size確是27,挨個字符遍歷也都是?。
這個本質(zhì)是因為中文不只占用一個字節(jié)的空間,換一種方式遍歷:
因為一個中文字符不一定占用幾個字節(jié),但它們的長度其實可以從字符的頭中讀取出來,這點可以查看UTF-8的Wiki介紹:https://en.wikipedia.org/wiki/UTF-8#Description
這里可以看到,通過Byte1的前4位就可以區(qū)分出這個字符究竟占用幾個字節(jié),所以就有了上述的遍歷方式。
具體學習可以看這兩個鏈接:
https://en.wikipedia.org/wiki/UTF-8#Description
https://stackoverflow.com/questions/40054732/c-iterate-utf-8-string-with-mixed-length-of-characters





