一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何遍歷中文字符串

程序喵大人 ? 來源:程序喵大人 ? 2023-07-03 09:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天和大家分享下如何遍歷中文字符串,主要是如何打印中文字符,因?yàn)橹形淖址總€(gè)字符占用不只一個(gè)字節(jié)的空間,如果我們逐個(gè)字節(jié)遍歷,會(huì)出現(xiàn)奇怪的結(jié)果。而UTF-8編碼寫的中文字符是有特定結(jié)構(gòu)的,我們可以按照它的規(guī)則去遍歷打印。

下面是詳情:

前提:UTF-8編碼。

先看下面的代碼和運(yùn)行結(jié)果:

751dab2a-1939-11ee-962d-dac502259ad0.png

上面代碼定義了一個(gè)9個(gè)中文的字符串,但打印size確是27,挨個(gè)字符遍歷也都是?。

這個(gè)本質(zhì)是因?yàn)橹形牟恢徽加靡粋€(gè)字節(jié)的空間,換一種方式遍歷:


753be536-1939-11ee-962d-dac502259ad0.png

因?yàn)橐粋€(gè)中文字符不一定占用幾個(gè)字節(jié),但它們的長(zhǎng)度其實(shí)可以從字符的頭中讀取出來,這點(diǎn)可以查看UTF-8的Wiki介紹:https://en.wikipedia.org/wiki/UTF-8#Description

756ede64-1939-11ee-962d-dac502259ad0.png

這里可以看到,通過Byte1的前4位就可以區(qū)分出這個(gè)字符究竟占用幾個(gè)字節(jié),所以就有了上述的遍歷方式。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    969

    瀏覽量

    55798
  • 字符
    +關(guān)注

    關(guān)注

    0

    文章

    237

    瀏覽量

    25604
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70800

原文標(biāo)題:如何遍歷中文字符串?

文章出處:【微信號(hào):程序喵大人,微信公眾號(hào):程序喵大人】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    DB Tools insert data.vi寫入中文字符串至Mysql數(shù)據(jù)庫(kù)失敗

    DB Tools insert data.vi在寫入中文字符串至mysql數(shù)據(jù)庫(kù)表中時(shí)寫入失誤,誰(shuí)能幫忙解決一下,謝謝。補(bǔ)充說明:寫入英文字符串不會(huì)出錯(cuò),更換為ACCESS或SQL Server數(shù)據(jù)庫(kù)后也能正常寫入.
    發(fā)表于 08-15 17:15

    關(guān)于定義中文字符串的問題

    本人使用的是pic18f25k20,想要定義一些中文字符串,結(jié)果定義的時(shí)候發(fā)現(xiàn)了一些問題,無(wú)法理解,請(qǐng)各位大神幫忙。直接上圖吧,定義了兩個(gè)中文字符串,第二個(gè)后面多了一些方框,不知道是什么意思,編譯的話都通過了。是不是這種定義方式對(duì)中文字
    發(fā)表于 11-06 11:34

    如何在multiedit中對(duì)中文字符進(jìn)行刪除操作?

    在multiedit中利用MULTIEDIT_AddKey(hMulti, GUI_KEY_BACKSPACE)可以很好的刪除光標(biāo)上一個(gè)8為ascii字符,但是對(duì)于16位的中文字符就不好使,大家用的是什么辦法來刪除中文字符的呀?
    發(fā)表于 09-25 04:25

    C語(yǔ)言關(guān)于中文字符串的使用誤區(qū)在哪

    C語(yǔ)言關(guān)于中文字符串的使用誤區(qū)背景前幾天在寫c語(yǔ)言代碼進(jìn)行文件讀寫的時(shí)候,在處理文件中的中文詩(shī)句的過程中發(fā)現(xiàn)了c語(yǔ)言txt文本文件的中文讀取到char數(shù)組中的一些不同尋常之處,因此做一個(gè)總結(jié)。c語(yǔ)言
    發(fā)表于 07-14 07:54

    C語(yǔ)言中文字符串的使用誤區(qū)有哪些?

    c語(yǔ)言漢字的存儲(chǔ)方式和特點(diǎn)是什么?C語(yǔ)言中文字符串的使用誤區(qū)有哪些?
    發(fā)表于 10-15 06:24

    怎樣去解決STM32口打印printf發(fā)送中文字符時(shí)亂碼的問題呢

    怎樣去解決STM32口打印printf發(fā)送中文字符時(shí)亂碼的問題呢?
    發(fā)表于 11-30 07:40

    使用printf去打印中文字符的時(shí)候出現(xiàn)亂碼是為什么?

    使用printf去打印中文字符的時(shí)候出現(xiàn)亂碼是為什么?
    發(fā)表于 12-02 07:12

    Arduino發(fā)送中文字符為什么需要轉(zhuǎn)碼?

    前言:技術(shù)售后中,技術(shù)論壇上,經(jīng)常有學(xué)習(xí)、使用Arduino的小伙伴咨詢“怎樣能讓Arduino IDE輸出中文字符串”的問題。歸根結(jié)底就是Arduino IDE使用的UTF8編碼,不支持GB編碼
    發(fā)表于 12-17 11:23

    如何在終端上使用UART輸出中文字符

    應(yīng)用程序: 演示如何在終端上使用 UART 輸出中文字符 BSP 版本:M451系列BSP CMSIS V3.01.003 硬件: NuTiny-EVB-M451 LQFP100 V1.3 序列
    發(fā)表于 08-23 06:46

    IAR中UTF-8中文字符串不顯示怎么解決?

    界面使用的是ucGUI原本使用GB2312編碼的中字符串可以直接讀取顯示,字庫(kù)也用FontCvt做了初始化的時(shí)候也添加了GUI_UC_SetEncodeutf8();函數(shù) 后面換成UTF-8的中文字符串
    發(fā)表于 10-07 07:11

    字符串的表示

    字符串的表示  隨著計(jì)算機(jī)在文字處理與信息管理中的廣泛應(yīng)用, 字符串已成為最常用的數(shù)據(jù)類型之一, 許多計(jì)算機(jī)中都提供字符串操作功能, 一些計(jì)算機(jī)還給出讀寫字
    發(fā)表于 10-13 17:11 ?3261次閱讀
    <b class='flag-5'>字符串</b>的表示

    C語(yǔ)言教程之回文字符串

    C語(yǔ)言教程之回文字符串,很好的C語(yǔ)言資料,快來學(xué)習(xí)吧。
    發(fā)表于 04-25 15:49 ?0次下載

    PHP多字節(jié)字符串處理函數(shù)mbstring函數(shù)庫(kù)的詳細(xì)資料說明

    PHP內(nèi)置的字符串長(zhǎng)度函數(shù)strlen無(wú)法正確處理中文字符串,它得到的只是字符串所占的字節(jié)數(shù)。對(duì)于GB2312的中文編碼,strlen得到的值是漢字個(gè)數(shù)的2倍,而對(duì)于UTF-8編碼的
    發(fā)表于 02-20 14:30 ?9次下載
    PHP多字節(jié)<b class='flag-5'>字符串</b>處理函數(shù)mbstring函數(shù)庫(kù)的詳細(xì)資料說明

    字符串函數(shù)重寫練習(xí)

    字符串函數(shù)重寫練習(xí):字符串比較、字符串拼接、字符串查找、字符串拷貝、內(nèi)存比較、內(nèi)存拷貝、內(nèi)存初始化、內(nèi)存比較、二維數(shù)組定義及基本使用、位運(yùn)算
    的頭像 發(fā)表于 05-05 15:02 ?2240次閱讀

    C語(yǔ)言總結(jié)_字符串函數(shù)封裝練習(xí)

    字符串函數(shù)重寫練習(xí):字符串比較、字符串拼接、字符串查找、字符串拷貝、內(nèi)存比較、內(nèi)存拷貝、內(nèi)存初始化、內(nèi)存比較、二維數(shù)組定義及基本使用、位運(yùn)算
    的頭像 發(fā)表于 08-14 09:42 ?1350次閱讀