Qt基礎(chǔ)開發(fā)之QString與QByteArray的區(qū)別有哪些-創(chuàng)新互聯(lián)

這篇文章主要介紹Qt基礎(chǔ)開發(fā)之QString與QByteArray的區(qū)別有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的嘉黎網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

QString

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

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

例如:0x31一個字節(jié)會轉(zhuǎn)換成"31"兩個字節(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"會轉(zhuǎn)換成0x31一個字節(jié), 需要注意它是一個靜態(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編碼字符,還包括各國語言的編碼,默認情況下QString會把所有數(shù)據(jù)當做utf-8編碼來處理。QByteArray只是單純用來處理數(shù)據(jù)的,除了能處理ASCII編碼字符,其它復(fù)雜的編碼不能處理,直接以字節(jié)流的方式來對待。

看下面一個例子:

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

輸出結(jié)果:str: "小馬哥" byte: "\xE5\xB0\x8F\xE9\xA9\xAC\xE5\x93\xA5",str保留編碼格式,能輸出中文,但是QByteArray只把"小馬哥"當做普通的字節(jié)數(shù)據(jù)來處理,utf-8編碼下,一個漢字占三個字節(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基礎(chǔ)開發(fā)之QString與QByteArray的區(qū)別有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站muchs.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)頁題目:Qt基礎(chǔ)開發(fā)之QString與QByteArray的區(qū)別有哪些-創(chuàng)新互聯(lián)
鏈接分享:http://muchs.cn/article26/csgjjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、微信小程序、云服務(wù)器、網(wǎng)站制作商城網(wǎng)站、網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司