QT之資料型別間轉換

2022-06-17 03:42:08 字數 1821 閱讀 7657

目錄一、qbytearray與qstring互轉

qbytearray與qstring互轉極為簡單,二者從本質上類似,都是連續儲存,區別是前者可以存無法顯示的字元,後者只存可顯示的字元。如qbytearray可以存0x00-0x19,而qstring則儲存如0x30等可顯示字元(0x20-0x7e)

//qbytearray轉為qstring示例:

qbytearray ba("abc123");

qstring str = ba; //或str.prepend(ba);

qdebug()二、 qstring 與 char *

qstring 轉 char *,需要用到 qbytearray 類, 因為 char * 最後都有乙個'\0'作為結束符,而採用 qstring::tolatin1() 時會在字串後面加上'\0'。

// 重點:以上方法當 qstring 裡不含中文時,沒有問題,但是 qstring 內含有中文時,轉換為 char * 就是亂碼。

//(此處不研究中文編碼)

qstring str;

char* ch;

qbytearray ba = str.tolatin1(); // must

ch=ba.data();

//方法一:

char* str;

qstring string(str);

//方法二:不重新定義物件

inline qstring chartoqstring(char* charpara)

三、 qbytearry 與 char *
// qbytearray 轉 char*

qbytearray byte;

char* str = byte.data();

//char*  轉 qbytearray

char* str;

qbytearray byte(str);

四、 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)

五、字元編碼

5.1、qstring編碼

qstring內部可能是使用unicode字符集來儲存文字。具體輸出的時候,就可以輸出該文字對應的unicode, ucs4, utf8, gb18030的編碼。

//**示例

printf("\n");

delete p;

qdebug() << "tolocal8bit" << tmp.tolocal8bit() << endl;//返回windows作業系統設定的字符集gb18030的編碼

qdebug() << "toucs4" << tmp.toucs4() << endl; //返回ucs4編碼組成的qvector,乙個漢字占用4位元組

QT資料型別轉換

1 char 與 const char 的轉換 char ch1 hello11 const char ch2 hello22 ch2 ch1 不報錯,但有警告 ch1 char ch2 2 char 與 qstring的轉換 char 轉換為 qstring 其實方法有很多中,我用的是 char ...

Qt 資料型別轉換

各種資料型別的相互轉換 char 與 const char 的轉換 char ch1 hello11 const char ch2 hello22 ch2 ch1 不報錯,但有警告 ch1 char ch2 char 轉換為 qstring 其實方法有很多中,我用的是 char a b qstrin...

QT 資料型別轉換

string std str abc qstring q str qstring fromstdstring std str qstring q str abc string q str.tostdstring string std str abc char str std str.c str st...