chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

如何遍歷中文字符串

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

掃碼添加小助手

加入工程師交流群

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

下面是詳情:

前提:UTF-8編碼。

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

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

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

這個本質(zhì)是因為中文不只占用一個字節(jié)的空間,換一種方式遍歷:


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

因為一個中文字符不一定占用幾個字節(jié),但它們的長度其實可以從字符的頭中讀取出來,這點可以查看UTF-8的Wiki介紹:https://en.wikipedia.org/wiki/UTF-8#Description

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

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

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

    關(guān)注

    6

    文章

    983

    瀏覽量

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

    關(guān)注

    0

    文章

    237

    瀏覽量

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

    關(guān)注

    30

    文章

    4922

    瀏覽量

    72243

原文標題:如何遍歷中文字符串?

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

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

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

    如何在multiedit中對中文字符進行刪除操作?

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

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

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

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

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

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

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

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

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

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

    前言:技術(shù)售后中,技術(shù)論壇上,經(jīng)常有學習、使用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編碼的中字符串可以直接讀取顯示,字庫也用FontCvt做了初始化的時候也添加了GUI_UC_SetEncodeutf8();函數(shù) 后面換成UTF-8的中文字符串
    發(fā)表于 10-07 07:11

    字符串的表示

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

    C語言教程之回文字符串

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

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

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

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

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

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

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