當前位置:成語大全網 - 漢語詞典 - 如何在QT3中實現QString和char*之間的轉換

如何在QT3中實現QString和char*之間的轉換

在Qt下,字符串都是QString,確實為開發者提供了便利。想想VC中定義的各種變量類型,函數參數類型五花八門,今年經常需要新的類型轉換。

當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();