當Qt再次使用第三方開源庫時,因為庫的類型基本都是標準類型,所以Char*是最常見的字符串類型。
如何在Qt下將QString轉換成char*需要QByteArray類,QByteArray類的描述可以在Qt幫助文檔中找到。
因為char*在末尾有壹個“/0”作為終止符,所以QString::toLatin1()會在字符串後面加上“/0”。
該方法如下:
Qstring
str
字符*
ch;
QByteArray
文學士
=
str . tolatin 1();
ch = ba . data();
這就完成了從QString到char*的轉換。經過測試的程序運行起來不會有錯誤。
註意第三行,壹定要補充說明是str.toLatin1()完成不了的。data(),可能會出錯。
補充:以上方法在QString不含中文的情況下沒有問題,但QString含中文的情況下,轉換成char*,即混沌碼e 799 be 5 baa 6 e 997 aee 7 ad 943133131313962,通過以下方法解決:
方法1:
添加GBK編碼支持:
#包括
& ltQTextCodec & gt
QTextCodec::setCodecForTr(QTextCodec::codecForName(" GBK "));
QTextCodec::setCodecForLocale(QTextCodec::codecForName(" GBK "));
然後改變上面的第三個行為:QByteArray。
文學士
=
str . toloacl 8 bit();
ToLoacl8Bit支持中文。
方法二:
首先,在標準庫中將QString轉換為String類型,然後將string轉換為char*,如下所示:
標準::字符串
潛艇用熱中子反應堆(submarine thermal reactor的縮寫)
=
filename . tostdstring();
常數
字符*
榮譽勛爵
=
str . c _ str();