91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Qt基礎開發之QString與QByteArray的區別有哪些

發布時間:2021-02-02 11:07:26 來源:億速云 閱讀:913 作者:小新 欄目:編程語言

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

QString

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

QString::arg()用法

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

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

QString::sprintf用法

QString

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

QByteArray

Qt的QByteArray類提供了很方便的對字節流操作的接口,QByteArray沒有繼承任何Qt基類。

QByteArray::toHex將字節流轉換成ACSII編碼

例如:0x31一個字節會轉換成"31"兩個字節

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

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

QByteArray::fromHex將ACSII編碼轉字節流

例如:"31"會轉換成0x31一個字節, 需要注意它是一個靜態函數

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

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

QByteArray轉char*

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

輸出:str: 123456

QString與QByteArray的區別

QString是專門用來處理字符串的,除了能處理ASCII編碼字符,還包括各國語言的編碼,默認情況下QString會把所有數據當做utf-8編碼來處理。QByteArray只是單純用來處理數據的,除了能處理ASCII編碼字符,其它復雜的編碼不能處理,直接以字節流的方式來對待。

看下面一個例子:

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

輸出結果:str: "小馬哥" byte: "\xE5\xB0\x8F\xE9\xA9\xAC\xE5\x93\xA5",str保留編碼格式,能輸出中文,但是QByteArray只把"小馬哥"當做普通的字節數據來處理,utf-8編碼下,一個漢字占三個字節。

QString QByteArray互轉

QString轉QByteArray

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

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

QByteArray轉QString

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

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

QString 轉char*

QString類型無法直接轉換成char*, 需要先轉換成QByteArray, 然后再轉char*

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

以上是“Qt基礎開發之QString與QByteArray的區別有哪些”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

如东县| 闽侯县| 宣恩县| 双城市| 南宁市| 洛南县| 正镶白旗| 武夷山市| 宿迁市| 云霄县| 新乐市| 郯城县| 辉南县| 凤翔县| 伊川县| 四平市| 剑河县| 太和县| 格尔木市| 焦作市| 五家渠市| 汕尾市| 大同市| 崇州市| 宁乡县| 格尔木市| 夏邑县| 饶平县| 丹寨县| 岢岚县| 淳安县| 宜宾县| 施秉县| 合阳县| 蓬安县| 皋兰县| 静乐县| 邵阳市| 海原县| 曲周县| 金昌市|