Qt学习笔记之QChar
在Qt中,QChar是Qt處理字符的基本類型,是對unicode字符的封裝。QChar使用2個字節(jié)的內(nèi)存,在其內(nèi)部維護了一個unsigned short 類型的內(nèi)存。
QChar(); // 構(gòu)造一個空字符,即'\0' QChar(char ch); // 由字符數(shù)據(jù)ch構(gòu)造,char類型作為QChar的構(gòu)造參數(shù)時,會被轉(zhuǎn)換為unsigned short,繼而可被QChar接管 QChar(uchar ch); // 由無符號字符數(shù)據(jù)ch構(gòu)造 QChar(ushort code); // 由無符號短整形數(shù)據(jù)code構(gòu)造,code是Unicode編碼 QChar(short code); //由 短整形數(shù)據(jù)code構(gòu)造,code是Unicode編碼 QChar(uint code); // 由無符號整型數(shù)據(jù)code構(gòu)造,code是Unicode編碼 QChar(int code); // 由整型數(shù)據(jù)code構(gòu)造,code是Unicode編碼在Qt中,Unicode字符是沒有任何標記或結(jié)構(gòu)的16位實體。此類表示這樣的實體。它是輕量級的,因此可以在任何地方使用。大多數(shù)編譯器將其視為無符號空頭。
QChar提供了完整的測試/分類功能,可以轉(zhuǎn)換為其他格式,也可以轉(zhuǎn)換為分解的Unicode格式,如果需要,還可以嘗試比較和轉(zhuǎn)換大小寫。
分類函數(shù)包括標準c++標頭<cctype>(以前是<ctype.h>)中的函數(shù),但是操作的是Unicode字符的全范圍,而不僅僅是ASCII范圍。如果字符是某種類型的字符,它們都返回true;否則返回false。這些分類功能isNull()(返回true,如果字符' \ 0 '),isPrint()(如果是任何類型的可打印字符,包括空格),isPunct()(任何類型的斑點),isMark () (Unicode)、isLetter()(字母),isNumber()(任何形式的數(shù)字字符,而不僅僅是0 - 9),isLetterOrNumber(),和isDigit()(小數(shù)位數(shù))。所有這些都是圍繞category()的包裝器,它返回每個字符的unicode定義的類別。其中一些還計算派生屬性(例如isSpace()如果字符屬于類別分隔符_*或來自Other_Control類別的異常代碼點,則返回true)。
QChar還提供了direction(),它指示該字符的“自然”寫入方向。joiningType()函數(shù)指示字符如何與它的鄰居連接(主要用于阿拉伯語或敘利亞語),最后是has(),它指示當字符以“非自然”的書寫方向打印時,是否需要鏡像字符。
通過使用decomposition(),可以將組合的Unicode字符(比如ring)轉(zhuǎn)換成分解的Unicode(“a”后面跟著“ring above”)。
在Unicode中,比較是不可能的,大小寫轉(zhuǎn)換是非常困難的。Unicode覆蓋了“整個”世界,也包括世界上的大多數(shù)情況和排序問題。操作符==()和好友將純粹基于字符的數(shù)值Unicode值(代碼點)進行比較,而toUpper()和toLower()將在字符具有定義良好的大寫/小寫等價時進行大小寫更改。對于依賴于語言環(huán)境的比較,使用QString::localeAwareCompare()。
轉(zhuǎn)換函數(shù)包括unicode()(轉(zhuǎn)換為標量)、toLatin1()(轉(zhuǎn)換為標量,但將所有非latin -1字符轉(zhuǎn)換為0)、row()(提供unicode行)、cell()(提供unicode單元格)、digitValue()(提供任意數(shù)字字符的整數(shù)值)和許多構(gòu)造函數(shù)。
QChar提供了構(gòu)造函數(shù)和強制類型轉(zhuǎn)換操作符,這使得轉(zhuǎn)換傳統(tǒng)的8位字符變得很容易。如果您定義了QT_NO_CAST_FROM_ASCII和QT_NO_CAST_TO_ASCII,就像QString文檔中解釋的那樣,您將需要顯式地調(diào)用fromLatin1(),或者使用QLatin1Char,從一個8位的字符構(gòu)造一個QChar,并且您將需要調(diào)用toLatin1()來獲取8位的值。
#include <QCoreApplication> #include <QChar> #include <QDebug> int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);char ch1 = 'h';QChar ch = 'hh';qDebug("%x",ch);qDebug("%x",ch1);return a.exec(); } 輸出結(jié)果: 6868 68參考資料:
1.?https://www.cnblogs.com/retry/p/9328715.html
2. Qt helper
總結(jié)
以上是生活随笔為你收集整理的Qt学习笔记之QChar的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt学习笔记之QByteArry
- 下一篇: Qt学习笔记之QLatin1Char