最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

QString

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

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類提供了很方便的對(duì)字節(jié)流操作的接口,QByteArray沒有繼承任何Qt基類。

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是專門用來處理字符串的,除了能處理ASCII編碼字符,還包括各國語言的編碼,默認(rèn)情況下QString會(huì)把所有數(shù)據(jù)當(dāng)做utf-8編碼來處理。QByteArray只是單純用來處理數(shù)據(jù)的,除了能處理ASCII編碼字符,其它復(fù)雜的編碼不能處理,直接以字節(jié)流的方式來對(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ù)來處理,utf-8編碼下,一個(gè)漢字占三個(gè)字節(jié)。

QString QByteArray互轉(zhuǎn)

QString轉(zhuǎn)QByteArray

QString str("123abc小馬哥");
 QByteArray byte1 = str.toLatin1(); //按照ASCII編碼轉(zhuǎn)換,無法轉(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類型無法直接轉(zhuǎn)換成char*, 需要先轉(zhuǎn)換成QByteArray, 然后再轉(zhuǎn)char*

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

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

相關(guān)文章

  • 介紹C語言程序中的注釋等輔助語句如何使用

    介紹C語言程序中的注釋等輔助語句如何使用

    C語言中分為單行注釋和多行注釋:單行注釋?以?//?開始的這一行文本,可能不被編譯器所支持;多行注釋從?/*?到?*/之間的所有文本,不支持嵌套,下面讓我們詳細(xì)來了解
    2022-04-04
  • C++中雙冒號(hào)::用法案例詳解

    C++中雙冒號(hào)::用法案例詳解

    這篇文章主要介紹了C++中雙冒號(hào)::用法案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • C語言*與&在操作線性表的作用詳解

    C語言*與&在操作線性表的作用詳解

    本文主要介紹了C語言*與&在操作線性表的作用詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 如何在c語言下關(guān)閉socket

    如何在c語言下關(guān)閉socket

    如果不主動(dòng)關(guān)閉socket的話,系統(tǒng)不會(huì)自動(dòng)關(guān)閉的,除非當(dāng)前進(jìn)程掛掉了,操作系統(tǒng)把占用的socket回收了才會(huì)關(guān)閉。下面小編來簡單介紹下
    2019-05-05
  • C++實(shí)現(xiàn)LeetCode(209.最短子數(shù)組之和)

    C++實(shí)現(xiàn)LeetCode(209.最短子數(shù)組之和)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(209.最短子數(shù)組之和),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C++實(shí)現(xiàn)冒泡排序(BubbleSort)

    C++實(shí)現(xiàn)冒泡排序(BubbleSort)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)冒泡排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • OpenCV圖像幾何變換之透視變換

    OpenCV圖像幾何變換之透視變換

    這篇文章主要為大家詳細(xì)介紹了OpenCV圖像幾何變換之透視變換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • C++如何在變量前面加#

    C++如何在變量前面加#

    這篇文章主要介紹了C++如何在變量前面加#問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • c++與python實(shí)現(xiàn)二分查找的原理及實(shí)現(xiàn)

    c++與python實(shí)現(xiàn)二分查找的原理及實(shí)現(xiàn)

    本文介紹了c++與python實(shí)現(xiàn)二分查找的原理及實(shí)現(xiàn),二分查找指首先將數(shù)組中間值和目標(biāo)值進(jìn)行比較,如果相等則返回;如果不相等,則選擇中間值左邊的一半或者右邊的一半進(jìn)行比較;不斷重復(fù)直到檢索完畢,下文相關(guān)資料需要的朋友可以參考一下
    2022-03-03
  • 一起來了解一下C++中的指針

    一起來了解一下C++中的指針

    這篇文章主要為大家詳細(xì)介紹了C++的指針,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02

最新評(píng)論

鹤山市| 静乐县| 霍城县| 吉首市| 宜昌市| 忻城县| 渝北区| 易门县| 商南县| 瑞丽市| 九寨沟县| 岫岩| 琼中| 巴中市| 得荣县| 尉氏县| 铜陵市| 鲜城| 江达县| 信阳市| 喀喇沁旗| SHOW| 北海市| 阜平县| 德庆县| 巴林右旗| 呼图壁县| 咸阳市| 锡林郭勒盟| 东乡族自治县| 永胜县| 临沂市| 尼勒克县| 大竹县| 沿河| 利辛县| 汕头市| 车致| 义乌市| 东莞市| 博湖县|