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