電子商務(wù)網(wǎng)站的建設(shè)開(kāi)發(fā)工具成都高新seo
QString和QByteArray的區(qū)別
- 本質(zhì)
- 格式轉(zhuǎn)換
- QString字符串格式化打印
- 長(zhǎng)度
本質(zhì)
QString是對(duì)QByteArray的再次封裝
QString可以通過(guò)char*來(lái)構(gòu)造,也可以通過(guò)QByteArray來(lái)構(gòu)造
QByteArray就是char*
QString是編碼后的char*
QString也是封裝了字符串, 但是內(nèi)部的編碼為utf8, UTF-8屬于Unicode字符集, 它固定使用多個(gè)字節(jié)(window為2字節(jié), linux為3字節(jié))來(lái)表示一個(gè)字符
QByteArray可以看做是c語(yǔ)言中 char*的升級(jí)版本。我們?cè)谑褂眠@種類(lèi)型的時(shí)候可通過(guò)這個(gè)類(lèi)的構(gòu)造函數(shù)申請(qǐng)一塊動(dòng)態(tài)內(nèi)存,用于存儲(chǔ)我們需要處理的字符串?dāng)?shù)據(jù)
格式轉(zhuǎn)換
可以將QString轉(zhuǎn)換為QByteArray
QString ->QByteArray ->char*
qDebug()<<"char* to QString";char* c_str = "hello";QString string = QString (QLatin1String(c_str));qDebug()<<string;qDebug()<<"QString to char* (two step)";QString string2("hello2");std::string a1 = string2.toLocal8Bit().data();std::string a2 = string2.toLatin1().data();std::string a3 = string2.toUtf8().data();std::cout<<a1<<std::endl;std::cout<<a2<<std::endl;std::cout<<a3<<std::endl;
QString字符串格式化打印
QString aa = QString("大家好,我是(%1),我的工號(hào)是(%2),我宣布(%3)!!!").arg("王健林").arg(001).arg("取消加班");qDebug()<<aa;
長(zhǎng)度
QString計(jì)算的是字符數(shù)目
QByteArray計(jì)算的是字節(jié)數(shù)(漢字3字節(jié),英文1字節(jié),數(shù)字1字節(jié))
QString a1 = "我a1";QByteArray a2 = "我a1";qDebug()<<a1.length()<<a2.length();