精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

關(guān)于C++遍歷中文字符串的問(wèn)題

開(kāi)發(fā)
今天來(lái)介紹一個(gè)C++中的基礎(chǔ)問(wèn)題:中文字符串的遍歷問(wèn)題。首先我們來(lái)一個(gè)demo,假如要使用std::string遍歷"你好,世界123"這個(gè)字符串,你會(huì)怎么寫(xiě)?

今天來(lái)介紹一個(gè)C++中的基礎(chǔ)問(wèn)題:中文字符串的遍歷問(wèn)題。可就是這么的一個(gè)基礎(chǔ)問(wèn)題,也坑了我不少時(shí)間,真是應(yīng)了那句話基礎(chǔ)不牢,地動(dòng)山搖。

小試牛刀

首先我們來(lái)一個(gè)demo,假如要使用std::string遍歷"你好,世界123"這個(gè)字符串,你會(huì)怎么寫(xiě)?

當(dāng)時(shí)筆者是這么想的:

于是大手一揮,Ctrl C + Ctrl V寫(xiě)下了一下代碼:

using namespace std;
int main() {
    std::string text = "你好,世界123";
    for (const auto c:text) {
        std::cout << "c:" << c << std::endl;
    }
    return 0;
}

運(yùn)行起來(lái)一看,我都懵逼了,居然是亂碼...

一看到亂碼,筆者首先想到的可能編碼不是utf-8的,于是我改了一行代碼:

 std::string text = u8"你好,世界123";

結(jié)果還是于事無(wú)補(bǔ),還是亂碼的,我開(kāi)始有點(diǎn)慌了...

在這里說(shuō)明一下當(dāng)在C++中使用字符串字面值時(shí),可以使用前綴u8來(lái)表示使用UTF-8編碼。這意味著該字符串會(huì)以UTF-8編碼的格式存儲(chǔ)在內(nèi)存中。

面對(duì)這些亂碼,我不得不拿出CV工程師的殺手锏,趕緊上stackoverflow求助...

不負(fù)眾望,果然被我找到了答案。。。

馬上復(fù)制粘貼來(lái)驗(yàn)證一波...

using namespace std;
int main() {
    std::string text = u8"你好,世界123";
    for(size_t i = 0; i < text.length();)
    {
        int cplen = 1;
        if((text[i] & 0xf8) == 0xf0) cplen = 4;
        else if((text[i] & 0xf0) == 0xe0) cplen = 3;
        else if((text[i] & 0xe0) == 0xc0) cplen = 2;
        if((i + cplen) > text.length()) cplen = 1;
        cout << text.substr(i, cplen) << endl;
        i += cplen;
    }
    return 0;
}

運(yùn)行起來(lái),果然是想要的結(jié)果。666,憑實(shí)力攻克了一個(gè)技術(shù)難題,帶領(lǐng)公司往前跨了一大步,這回升級(jí)加薪穩(wěn)了吧!!!

尋根問(wèn)底

本著舉一反三的學(xué)習(xí)態(tài)度,我想知道為什么中文字符串的遍歷要特殊處理,我找到了這個(gè):https://en.wikipedia.org/wiki/UTF-8#Description

原來(lái)一個(gè)中文字符不一定是和英文一樣占用一個(gè)字符,它們可能會(huì)占用幾個(gè)字符,但它們的長(zhǎng)度其實(shí)可以從字符的頭中讀取出來(lái)的。

我簡(jiǎn)單地用瀏覽器翻譯了一下,大家將就這看一下大概意思

當(dāng)然如果你不想自己寫(xiě)獲取中文字符長(zhǎng)度的邏輯代碼,也可以用別人寫(xiě)好的開(kāi)源庫(kù)。這里給大家推薦一個(gè)輕量級(jí)的,只有一個(gè)utf8.h文件的開(kāi)源庫(kù):https://github.com/sheredom/utf8.h

那么我們的代碼就變成了這樣:

int main() {
    std::string text = u8"你好,世界123";
    for (size_t i = 0; i < text.size();)
    {
        auto cplen = utf8codepointcalcsize(&text[i]);
        std::cout << text.substr(i, cplen) << std::endl;
        i += cplen;
    }
    return 0;
}

其實(shí)我們查看下utf8.h這個(gè)庫(kù)的utf8codepointcalcsize函數(shù)內(nèi)部實(shí)現(xiàn),和我們上面說(shuō)的是一樣的。

這么一個(gè)簡(jiǎn)單的坑,以前怎么沒(méi)發(fā)現(xiàn)這個(gè)問(wèn)題?一個(gè)是沒(méi)遇到過(guò)這樣的需求,二是就算用到了也不是用C++實(shí)現(xiàn)的,例如在QT上直接使用QString就沒(méi)有這些問(wèn)題。

責(zé)任編輯:趙寧寧 來(lái)源: 思想覺(jué)悟
相關(guān)推薦

2011-06-16 17:01:21

Qt MeeGo 排序

2010-02-02 16:49:32

C++中文字符

2009-11-26 16:26:32

PHP字符串mbstr

2009-11-26 16:43:11

PHP截取中文字符串

2021-09-07 09:23:07

C++字符串算法

2009-12-01 15:41:16

PHP substr截

2010-03-05 16:09:44

Python中文字符

2010-02-02 11:27:16

C++字符串

2010-02-05 09:57:25

C++中英文字符串

2011-07-18 13:34:44

SQL Server數(shù)拼接字符串

2023-12-11 15:18:03

C++字符串Unicode

2010-02-04 17:39:48

C++字符串類(lèi)型

2021-07-30 06:22:37

C++字符型字符串

2009-11-27 09:55:11

PHP截取中文字符

2010-02-04 17:32:43

C++中C風(fēng)格字符串

2024-02-22 09:46:04

C++字符串格式化開(kāi)發(fā)

2021-08-20 06:58:31

C++Python函數(shù)

2009-11-27 09:30:58

PHP函數(shù)mb_str

2024-08-19 00:10:00

C++內(nèi)存

2010-02-02 18:01:47

C++字符串替換函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲欧洲色图综合| 久久99久久久久久久久久久| 亚洲人午夜精品免费| 亚洲男人天堂色| 在线网址91| 久久久精品2019中文字幕之3| 国产日韩中文字幕| 日本三级网站在线观看| 青青草91久久久久久久久| 欧美va亚洲va| 免费看国产黄色片| av色在线观看| 1区2区3区精品视频| 国内精品视频免费| 国产伦精品一区二区三区四区 | www.激情网| 成人福利在线| av电影天堂一区二区在线| 国产精品自产拍在线观| 国产成人无码精品| 综合在线视频| 国产亚洲欧洲在线| 深爱五月激情网| 免费精品一区| 欧美美女直播网站| 亚洲免费看av| www.com.cn成人| 亚洲成a人片在线不卡一二三区| 欧美一级免费在线观看| 超碰免费在线| 国产午夜亚洲精品羞羞网站| av一本久道久久波多野结衣| 在线视频 91| 日韩精品亚洲专区| 青青精品视频播放| 黄色一级片免费看| 亚洲激情精品| 久久久久女教师免费一区| 在线看的片片片免费| 四虎8848精品成人免费网站| 永久免费看mv网站入口亚洲| 自拍偷拍亚洲天堂| 九一精品国产| 亚洲人a成www在线影院| 中文字幕丰满乱子伦无码专区| 果冻天美麻豆一区二区国产| 日韩一级二级三级精品视频| 992tv人人草| 亚洲一二av| 精品噜噜噜噜久久久久久久久试看| 91小视频在线播放| 国产一区二区视频在线看| 777色狠狠一区二区三区| 亚洲va在线va天堂va偷拍| 日韩美女在线| 91精品国产综合久久香蕉的特点| 成人av毛片在线观看| 亚洲免费资源| 日韩欧美一区二区久久婷婷| 韩国av中国字幕| 国产欧美自拍一区| 日韩电影免费在线观看中文字幕 | 精品国产一区二区三区噜噜噜| 亚洲美女性视频| 无码人妻丰满熟妇啪啪欧美| 欧美日韩国产高清电影| 最近2019好看的中文字幕免费 | 男生女生差差差的视频在线观看| 久久免费看少妇高潮| 色999日韩自偷自拍美女| 在线观看的av| 亚洲久草在线视频| a在线视频观看| 成人亚洲网站| 日韩女同互慰一区二区| jizz日本免费| 波多野结衣在线观看一区二区| 久久精品视频在线播放| 精品午夜福利视频| 视频一区二区中文字幕| 成人欧美一区二区三区黑人| 亚洲美女性生活| 国产欧美中文在线| 日韩人妻一区二区三区蜜桃视频| 手机在线免费av| 日本久久一区二区| 欧美日韩一区二区区| 免费一区二区三区视频导航| 久久久国产精品x99av| 欧美不卡视频在线观看| 久久一区欧美| 国产98在线|日韩| 国产对白叫床清晰在线播放| 一区二区三区久久久| 成年人网站大全| 日本一区二区三区视频在线看| 亚洲欧美日韩精品| 欧美黑人猛猛猛| 日本欧美在线观看| 国产欧美日韩综合精品二区| 91精品专区| 狠狠色狠狠色综合日日五| 色婷婷.com| 亚洲日本三级| 色综合色综合网色综合| 中文在线字幕免费观| 大尺度一区二区| 在线国产伦理一区| 9i看片成人免费高清| 精品国精品国产| 日本一二三区在线观看| 天堂影院一区二区| 国产伦视频一区二区三区| 欧美13一16娇小xxxx| 在线一区二区视频| jizz欧美性20| 国产一区二区三区自拍| 91精品国产综合久久香蕉的用户体验| 四虎影视2018在线播放alocalhost| 亚洲欧美另类久久久精品2019| 久久久久久香蕉| 日韩欧美黄色| 国内伊人久久久久久网站视频 | 婷婷视频在线播放| 日本肉肉一区| 亚洲欧美成人网| 国产一级18片视频| 92精品国产成人观看免费| 黄色成人在线免费观看| 国产精品亚洲一区二区在线观看| 中文综合在线观看| 亚洲国产av一区二区三区| 337p粉嫩大胆色噜噜噜噜亚洲| 人人妻人人澡人人爽欧美一区双| 国产精品国产三级在线观看| 久久精品视频免费播放| 亚洲综合一区中| 国产精品免费免费| 日本不卡一区二区在线观看| 成人羞羞网站入口| 国产精品网红直播| 久操视频在线免费播放| 欧美精品精品一区| 亚洲精品一区二区三区在线播放| 久久精品久久久精品美女| 亚洲精品国产一区| 日韩电影免费观看高清完整版在线观看 | 男女无套免费视频网站动漫| 国产影视一区| 国产成人一区三区| 97人人在线| 欧美久久一二三四区| 亚洲欧美精品久久| 国产精品一区二区你懂的| 日韩精品福利片午夜免费观看| 亚洲精品高潮| 国产69精品久久久久久| 嫩草在线播放| 欧美精品 日韩| 免费一级片在线观看| 国产91富婆露脸刺激对白| 热99这里只有精品| 久久99视频| 国产精品夜间视频香蕉| 成人a在线视频免费观看| 精品欧美一区二区在线观看| 国产一级精品视频| 国产欧美一区二区精品性色| 日韩成人精品视频在线观看| 欧美久久99| 欧美国产一二三区| 国模私拍国内精品国内av| 欧美老女人性视频| 日本精品一二区| 在线观看成人小视频| 一级片一级片一级片| 99re这里只有精品视频首页| www.日本xxxx| 欧美日本国产| 日韩av一级大片| 日本免费一区二区三区视频| 欧美亚洲另类在线| 免费网站免费进入在线| 亚洲国产精品va在线观看黑人| av首页在线观看| 亚洲在线视频网站| jizz18女人高潮| 豆国产96在线|亚洲| 91av俱乐部| 韩日在线一区| 亚洲ai欧洲av| 高清精品视频| 91精品久久久久久久久久久久久久| 国产在线xxx| 伊人久久精品视频| 污视频网站在线播放| 欧美日韩国产三级| 欧美一级特黄视频| 亚洲制服丝袜av| 99成人在线观看| 2021国产精品久久精品| 亚洲精品无码久久久久久久| 日韩电影在线免费观看| 给我免费播放片在线观看| 91精品在线观看国产| 日本不卡二区| 欧美自拍一区| 国产98在线|日韩| 成人在线视频区| 国产精品成人av性教育| 182在线播放| 欧美理论片在线观看| 成人在线免费电影| 日韩精品极品在线观看| 亚洲经典一区二区| 欧美精品aⅴ在线视频| 中文字幕av影视| 激情久久av一区av二区av三区| 黄页网站免费观看| 中文字幕一区二区不卡| 亚洲av熟女国产一区二区性色| bt欧美亚洲午夜电影天堂| 波多野吉衣在线视频| 捆绑紧缚一区二区三区视频| 手机看片福利日韩| 欧美亚洲三区| 国产主播在线看| 国产农村妇女毛片精品久久莱园子| 成人在线视频一区二区三区| 亚洲最新色图| ijzzijzzij亚洲大全| 欧美gayvideo| 亚洲一区二区在线观| 欧美三级三级| 午夜精品亚洲一区二区三区嫩草| 国产亚洲一区二区三区不卡| 美国av一区二区三区| 亚洲国产欧美日韩在线观看第一区| 国产精品手机在线| ccyy激情综合| 国产在线精品一区| 日韩欧美影院| 久久久久久久有限公司| 西瓜成人精品人成网站| 美乳视频一区二区| 国产精品一在线观看| 欧美三级网色| 日韩成人a**站| 亚洲人成人77777线观看| 欧美独立站高清久久| 一区二区三区偷拍| 亚洲一区二区| 亚洲 欧美 综合 另类 中字| 国产一区成人| 最近免费中文字幕中文高清百度| 日本不卡视频在线观看| 在线一区二区不卡| 国产盗摄精品一区二区三区在线| 成人啪啪18免费游戏链接| www.视频一区| 亚洲v国产v欧美v久久久久久| 欧美韩国日本一区| 爱爱视频免费在线观看| 亚洲一区二区在线免费观看视频| 97久久久久久久| 在线精品视频免费观看| 一区二区日韩在线观看| 日韩午夜在线观看视频| 天天射天天操天天干| 国产亚洲欧洲黄色| 丝袜中文在线| 情事1991在线| 国产午夜久久av| 精品无人区一区二区三区| 欧美熟乱15p| 日本xxxxx18| 香蕉亚洲视频| 精品亚洲视频在线| 91免费观看视频| a一级免费视频| 狠狠色狠色综合曰曰| 中文字幕日韩经典| 精品国产免费视频| 第九色区av在线| 欧美激情欧美狂野欧美精品 | 国产一区观看| 亚洲综合欧美激情| 成人精品视频.| 精品一区二区三孕妇视频| 亚洲成人免费视频| 亚洲中文一区二区三区| 亚洲国产精品久久精品怡红院| 懂色av中文在线| 欧美精品激情blacked18| 国产韩日精品| 国产伦精品一区二区三区照片 | 久久天天躁狠狠躁夜夜av| 狠狠躁少妇一区二区三区| 国产在线观看精品一区二区三区| 国产精品视屏| 手机成人av在线| 久久深夜福利| 国产chinese中国hdxxxx| 亚洲欧美一区二区视频| 久久夜色精品国产噜噜亚洲av| 日韩亚洲电影在线| 色多多视频在线观看| 青青a在线精品免费观看| 91麻豆精品国产91久久久久推荐资源| 午夜精品亚洲一区二区三区嫩草 | 色在线免费视频| 欧美国产视频一区二区| 久久伊人国产| 日韩偷拍一区二区| 欧美亚洲免费| 三级男人添奶爽爽爽视频 | 天天干天天操天天爱| 亚洲精品在线免费观看视频| 国产激情在线视频| 国产精品无av码在线观看| 在线看成人短视频| 久色视频在线播放| 成人免费福利片| 久久av高潮av无码av喷吹| 这里是久久伊人| 免费在线视频欧美| 国产精品免费在线免费| 九色成人国产蝌蚪91| 国产免费毛卡片| gogogo免费视频观看亚洲一| 国产亚洲第一页| 日韩欧美国产精品| 怡红院av在线| 99在线视频免费观看| 欧美日韩精品| 国产乱淫av麻豆国产免费| 国产精品久久久久久久久免费丝袜| 日韩人妻精品中文字幕| 亚洲精品有码在线| 亚洲成a人片| 日本视频一区二区不卡| 老司机久久99久久精品播放免费| 91精品人妻一区二区三区| 色网综合在线观看| 国产三级在线| 国产精品综合网站| 亚洲成人tv| 国产人妖在线观看| 香港成人在线视频| 完全免费av在线播放| 精品日韩在线视频| 欧美高清视频不卡网| 中文字幕有码在线视频| 国产91一区二区三区| 国产婷婷精品| 中文字幕av久久爽一区| 7777精品伊人久久久大香线蕉| а√天堂8资源在线官网| 波多野结衣精品久久| 夜夜精品视频| 午夜精产品一区二区在线观看的| 欧美日韩一区在线| av免费在线观| 国产综合 伊人色| 奇米影视在线99精品| 日本妇女毛茸茸| 国产视频精品久久久| 激情亚洲影院在线观看| 中文字幕一区二区三区最新| 在线亚洲美日韩| 99精品视频免费看| 首页亚洲欧美制服丝腿| 中文字幕天天干| 亚洲免费观看高清完整版在线观看熊| 午夜精品久久久久久久99老熟妇| 亚洲3p在线观看| 欧美一级精品| 中文字幕乱码在线人视频| 欧美视频在线看| 免费观看成人高潮| 国产另类自拍| 久久精品国产一区二区三 | 日本黄在线观看| 国产在线观看精品| 在线综合欧美| 久草视频手机在线| 亚洲美女视频网站| 亚洲国产高清在线观看| 日本在线视频www| 伊人色综合久久天天| 精品视频一二区| 97超碰人人看人人| 日韩av一级片| 国产乡下妇女做爰| 中文字幕亚洲自拍| 免费成人高清在线视频theav| 中文字幕剧情在线观看| 在线欧美日韩精品| 第一福利在线视频| 激情五月五月婷婷|