亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Qt基礎(chǔ)開(kāi)發(fā)之QString與QByteArray詳細(xì)用法與區(qū)別及QString QByteArray互轉(zhuǎn)

 更新時(shí)間:2020年03月16日 15:13:49   作者:嚇人的猿  
這篇文章主要介紹了Qt基礎(chǔ)開(kāi)發(fā)之QString與QByteArray詳細(xì)用法與區(qū)別及QString QByteArray互轉(zhuǎn),需要的朋友可以參考下

QString

Qt的QString類(lèi)提供了很方便的對(duì)字符串操作的接口,QString沒(méi)有繼承任何Qt基類(lèi)。

QString::arg()用法

QString str = QString("%1 %2 %3").arg(1).arg(2.0).arg("hello");

​ %1, %2, %3作為占位符,將被后面的arg()函數(shù)中的內(nèi)容依次替換,比如%1將被替換成1,%2將被替換成2.0,%3將被替換成"hello"。輸出為:"1 2 hello"

QString::sprintf用法

QString

QString
str.sprintf("%d %s", 10, "hello");

QByteArray

Qt的QByteArray類(lèi)提供了很方便的對(duì)字節(jié)流操作的接口,QByteArray沒(méi)有繼承任何Qt基類(lèi)。

QByteArray::toHex將字節(jié)流轉(zhuǎn)換成ACSII編碼

例如:0x31一個(gè)字節(jié)會(huì)轉(zhuǎn)換成"31"兩個(gè)字節(jié)

QByteArray byte("123456");
QByteArray byteHex = byte.toHex();
qDebug() << "byte:" << byte << "byteHex:" << byteHex << endl;

輸出:byte: "123456" byteHex: "313233343536"

QByteArray::fromHex將ACSII編碼轉(zhuǎn)字節(jié)流

例如:"31"會(huì)轉(zhuǎn)換成0x31一個(gè)字節(jié), 需要注意它是一個(gè)靜態(tài)函數(shù)

QByteArray byte("31323334");
QByteArray byteFromHex = QByteArray::fromHex(byte);
qDebug() << "byte:" << byte << "byteFromHex:" << byteFromHex << endl;

輸出: byte: "31323334" byteFromHex: "1234"

​QByteArray轉(zhuǎn)char*

QByteArray byte("123456");
char* str = byte.data();
qDebug() << "str:" << str << endl;

輸出:str: 123456

QString與QByteArray的區(qū)別

​QString是專(zhuān)門(mén)用來(lái)處理字符串的,除了能處理ASCII編碼字符,還包括各國(guó)語(yǔ)言的編碼,默認(rèn)情況下QString會(huì)把所有數(shù)據(jù)當(dāng)做utf-8編碼來(lái)處理。QByteArray只是單純用來(lái)處理數(shù)據(jù)的,除了能處理ASCII編碼字符,其它復(fù)雜的編碼不能處理,直接以字節(jié)流的方式來(lái)對(duì)待。

看下面一個(gè)例子:

QString str("小馬哥");
QByteArray byte("小馬哥");
qDebug() << "str:" << str << "byte:" << byte << endl;

​輸出結(jié)果:str: "小馬哥" byte: "\xE5\xB0\x8F\xE9\xA9\xAC\xE5\x93\xA5",str保留編碼格式,能輸出中文,但是QByteArray只把"小馬哥"當(dāng)做普通的字節(jié)數(shù)據(jù)來(lái)處理,utf-8編碼下,一個(gè)漢字占三個(gè)字節(jié)。

QString QByteArray互轉(zhuǎn)

QString轉(zhuǎn)QByteArray

QString str("123abc小馬哥");
 QByteArray byte1 = str.toLatin1(); //按照ASCII編碼轉(zhuǎn)換,無(wú)法轉(zhuǎn)換中文
 QByteArray byte2 = str.toUtf8();  //按照Utf-8編碼轉(zhuǎn)換,可以轉(zhuǎn)換中文
 qDebug() <<  "byte1:" << byte1 << "byte2:" << byte2;

輸出結(jié)果:byte1: "123abc???" byte2: "123abc\xE5\xB0\x8F\xE9\xA9\xAC\xE5\x93\xA5"

QByteArray轉(zhuǎn)QString

QByteArray byte("123abc小馬哥");
QString str(byte);
qDebug() << "byte:" << byte << "str:" << str;

輸出結(jié)果:byte: "123abc\xE5\xB0\x8F\xE9\xA9\xAC\xE5\x93\xA5" str: "123abc小馬哥"

QString 轉(zhuǎn)char*

​QString類(lèi)型無(wú)法直接轉(zhuǎn)換成char*, 需要先轉(zhuǎn)換成QByteArray, 然后再轉(zhuǎn)char*

QString str("123abc小馬哥");
QByteArray byte = str.toUtf8();
char* str1 = byte.data();

本文主要講解了Qt開(kāi)發(fā)中QString與QByteArray詳細(xì)用法與區(qū)別及QString QByteArray互轉(zhuǎn),QByteArray轉(zhuǎn)char*、QString轉(zhuǎn)char*、更多源于Qt開(kāi)發(fā)知識(shí)請(qǐng)查看下面的相關(guān)鏈接

相關(guān)文章

  • C語(yǔ)言+EasyX實(shí)現(xiàn)數(shù)字雨效果

    C語(yǔ)言+EasyX實(shí)現(xiàn)數(shù)字雨效果

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言+EasyX實(shí)現(xiàn)數(shù)字雨效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • 一文帶你簡(jiǎn)單了解c++正則表達(dá)式

    一文帶你簡(jiǎn)單了解c++正則表達(dá)式

    正則表達(dá)式在匹配字符串,驗(yàn)證輸入合法性時(shí)經(jīng)常用到.C++?11標(biāo)準(zhǔn)庫(kù)中已經(jīng)支持了正則表達(dá)式,下面這篇文章主要給大家介紹了關(guān)于c++正則表達(dá)式的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • windows下用c++獲取本機(jī)ip地址的三種方法

    windows下用c++獲取本機(jī)ip地址的三種方法

    工作過(guò)程中遇到一個(gè)需求,需要獲取本機(jī)ip地址,同時(shí)獲取本機(jī)網(wǎng)絡(luò)連接情況,即網(wǎng)線(xiàn)是否連接,經(jīng)過(guò)多番搜索,本文給大家介紹了3種方案,通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • C++?實(shí)現(xiàn)單鏈表創(chuàng)建、插入和刪除

    C++?實(shí)現(xiàn)單鏈表創(chuàng)建、插入和刪除

    這篇文章主要介紹了C++?實(shí)現(xiàn)單鏈表創(chuàng)建、插入和刪除方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C++實(shí)現(xiàn)STL迭代器萃取的示例代碼

    C++實(shí)現(xiàn)STL迭代器萃取的示例代碼

    迭代器是一種抽象的設(shè)計(jì)概念,它提供了一種方法,使之能夠依序巡訪(fǎng)某個(gè)聚合物(容器)所含的各個(gè)元素,而又無(wú)需暴露該聚合物的內(nèi)部表述方式。本文主要介了STL迭代器萃取的方法,需要的可以參考一下
    2022-11-11
  • C++如何判斷一個(gè)數(shù)字是否為質(zhì)數(shù)

    C++如何判斷一個(gè)數(shù)字是否為質(zhì)數(shù)

    這篇文章主要為大家詳細(xì)介紹了C++如何判斷一個(gè)數(shù)字是否為質(zhì)數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • C++實(shí)現(xiàn)線(xiàn)性表鏈?zhǔn)酱鎯?chǔ)(單鏈)

    C++實(shí)現(xiàn)線(xiàn)性表鏈?zhǔn)酱鎯?chǔ)(單鏈)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)線(xiàn)性表鏈?zhǔn)酱鎯?chǔ),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C++使用jsoncpp解析json的方法示例

    C++使用jsoncpp解析json的方法示例

    這篇文章主要介紹了C++使用jsoncpp解析json的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • C++?Boost?Xpressive示例分析使用

    C++?Boost?Xpressive示例分析使用

    Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱(chēng)。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱(chēng)
    2022-11-11
  • C語(yǔ)言的分支和循環(huán)語(yǔ)句你真的了解嗎

    C語(yǔ)言的分支和循環(huán)語(yǔ)句你真的了解嗎

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言的分支和循環(huán)語(yǔ)句,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02

最新評(píng)論