您好,登錄后才能下訂單哦!
這篇文章主要介紹Qt基礎(chǔ)開發(fā)之QString與QByteArray的區(qū)別有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
Qt的QString類提供了很方便的對字符串操作的接口,QString沒有繼承任何Qt基類。
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
QString str.sprintf("%d %s", 10, "hello");
Qt的QByteArray類提供了很方便的對字節(jié)流操作的接口,QByteArray沒有繼承任何Qt基類。
例如:0x31一個字節(jié)會轉(zhuǎn)換成"31"兩個字節(jié)
QByteArray byte("123456"); QByteArray byteHex = byte.toHex(); qDebug() << "byte:" << byte << "byteHex:" << byteHex << endl;
輸出:byte: "123456" byteHex: "313233343536"
例如:"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 byte("123456"); char* str = byte.data(); qDebug() << "str:" << str << endl;
輸出:str: 123456
QString是專門用來處理字符串的,除了能處理ASCII編碼字符,還包括各國語言的編碼,默認情況下QString會把所有數(shù)據(jù)當做utf-8編碼來處理。QByteArray只是單純用來處理數(shù)據(jù)的,除了能處理ASCII編碼字符,其它復雜的編碼不能處理,直接以字節(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 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 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*, 需要先轉(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)注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。