QT之QChar


QT之QChar

QChar 類是 Qt 中用於表示一個字符的類,實現在 QtCore 共享庫中。QChar 類內部用2個字節的Unicode編碼來表示一個字符。

一、編碼

//char類型是c/c++中內置的類型,描述了1個字節的內存信息的解析。
char gemfield=’g’;  //gemfield標記的這塊內存的大小就是1個字節,信息就是01100111,8位。


char gemfield=’漢’;
//gemfield標記的這塊內存的大小依然是1個字節,存儲的信息是:0xBA,
//這是因為在windows系統中,漢字是以gbk編碼(ANSI)存儲的,“漢”這個字的編碼是0xBABA,因為char只有1個字節,所以就把低字節存儲過來。

//經過gemfield上面的介紹后,你已經理解了char這個內置類型的用法,也就理解了下面語句的輸出了:
char gemfield=0×40;
printf(“gemfield’s value is %c”,gemfield);
  • QChar是Qt處理字符的基本類型,是對unicode字符的封裝。QChar使用2個字節的內存,在其內部維護了一個unsigned short 類型的內存(大多數的編譯工具也會把它當作unsigned short類型)。使用的是ucs-2標准。

  • QChar封裝一個char類型是相當容易理解的,char類型作為QChar的構造參數時,會被轉換為unsigned short,繼而可被QChar接管。

  • QChar封裝一個unsigned short類型也是容易理解的,比如:
//依據Qt內部使用的unicode表和codec插件,gemfield就可以被成功解析為“漢”這個字。
QChar gemfield=0x6C49; //0x6C49是“漢”字的unicode編碼
//下面這種情況是QChar不能處理的:
QChar gemfield = ‘漢’;  //windows上“漢”的編碼是gbk編碼,值為0xBABA,正如gemfield上文提到的那樣。
// QChar維護的unsigned short內存上的信息是0xBABA,這個值並不是unicode編碼(unicode編碼值是gemfield上文中提到的0x6C49),所以解析不了。同理,QChar可以通過unicode()函數返回一個字符的unicode編碼。

二、Qchar接口

2.1、Qchar構造函數

//QChar 類提供了多個不同原型的構造函數以方便使用
QChar();                   // 構造一個空字符,即'\0'
QChar(char ch);         // 由字符數據ch構造
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編碼

2.2、Qchar字符判斷

//QChar 類提供了很多成員函數,可以對字符的類型進行判斷,如:

bool isDigit() const;            // 判斷是否是十進制數字('0' - '9')

bool isLetter() const;          // 判斷是否是字母

bool isNumber() const;        // 判斷是否是數字,包括正負號、小數點等

bool isLetterOrNumber();    // 判斷是否是字母或數字

bool isLower() const;           // 判斷是否是小寫字母

bool isUpper() const;           // 判斷是否是大寫字母

bool isNull() const;              // 判斷是否是空子符'\0'

bool isPrint() const;            // 判斷是否是可打印字符

bool isSpace() const;         // 判斷是否是分隔符,包括空格等

2.3、Qchar數據轉換

//QChar 類提供了一些成員函數進行數據的轉換,如:
char toAscii() const;           // 得到字符的ASCII碼

QChar toLower() const;    // 轉換成小寫字母

QChar toUpper() const;    // 轉換成大寫字母

ushort unicode() const;    // 得到Unicode編碼

//注意這幾個函數都不會改變對象自身,轉換的結果通過返回值反映出來。 

2.3、Qchar字符比較

//Qt 中定義了一些與 QChar 類相關的比較操作符, 如:

bool operator != (QChar c1, QChar c2);    // 判斷 c1 是否不等於 c2

bool operator < (QChar c1, QChar c2);     // 判斷  c1 是否小於 c2

bool operator <= (QChar c1, QChar c2);   // 判斷 c1 是否小於等於 c2

bool operator == (QChar c1, QChar c2);   // 判斷 c1是否等於c2

bool operator > (QChar c1, QChar c2);    // 判斷 c1 是否大於 c2

bool operator >= (QChar c1, QChar c2);   // 判斷  c1是否大於等於 c2

2.3、Qchar與Char類型轉化

//qchar - char 
// char Qchar::toLatin1()  或者 char Qchar::toAscii() const
char ch;
qchar qch;
ch = qch.toLatin1;

//char -> qchar
qchar(char ch)
qchar (uchar ch)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM