当前位置:首页 > 单片机 > 程序喵大人

今天和大家分享下如何遍历中文字符串,主要是如何打印中文字符,因为中文字符串每个字符占用不只一个字节的空间,如果我们逐个字节遍历,会出现奇怪的结果。而UTF-8编码写的中文字符是有特定结构的,我们可以按照它的规则去遍历打印。


下面是详情:


前提:UTF-8编码。


先看下面的代码和运行结果:


上面代码定义了一个9个中文的字符串,但打印size确是27,挨个字符遍历也都是


这个本质是因为中文不只占用一个字节的空间,换一种方式遍历:



因为一个中文字符不一定占用几个字节,但它们的长度其实可以从字符的头中读取出来,这点可以查看UTF-8的Wiki介绍:https://en.wikipedia.org/wiki/UTF-8#Description



这里可以看到,通过Byte1的前4位就可以区分出这个字符究竟占用几个字节,所以就有了上述的遍历方式。


具体学习可以看这两个链接:


https://en.wikipedia.org/wiki/UTF-8#Description


https://stackoverflow.com/questions/40054732/c-iterate-utf-8-string-with-mixed-length-of-characters


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
关闭