QString 向 char 的轉化

2021-08-11 10:21:25 字數 1530 閱讀 4747

一、qstring 轉換為 char *

將 qstring 轉 char *,需要用到 qbytearray 類,qbytearray 類的說明詳見 qt 幫助文件。 

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

方法如下:

qstring  str;

char* ch;

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

ch=ba.data();

這樣就完成了 qstring 向 char * 的轉化。經測試程式執行時不會出現 bug。注意第3行,一定要加上,不可以 str.tolatin1().data() 這樣一步完成,否則可能會出錯。 

補充:以上方法當 qstring 裡不含中文時,沒有問題,但是 qstring 內含有中文時,轉換為 char * 就是亂碼,採用如下方法解決:

方法1:

新增gbk編碼支援:

#include

qtextcodec::setcodecfortr(qtextcodec::codecforname("gbk"));

qtextcodec::setcodecforlocale(qtextcodec::codecforname("gbk"));

然後將上面的第3行修改為:

qbytearray ba = str.tolocal8bit();  // tolocal8bit 支援中文
方法2:

先將 qstring 轉為標準庫中的 string 型別,然後將 string 轉為 char *。如下:

qstring  filename;
std::string 

str= filename.tostdstring();

const

char

* ch =

str.c_str();方法三:strcpy(ch,ui->lineeditline->text.tostdstring.data());//對於中文字元

二、 char * 轉換為 qstring

將 char * 轉換為 qstring 比較容易操作,我們可以使用 qstring 的建構函式進行轉換:

qstring(const qlatin1string &str);
qlatin1string 的建構函式:

qlatin1string(const

char *str);

因此用下面這個語句就可以將 char * ch 轉換為 qstring str 了,如下:

str =qstring(qlatin1string(ch));

QString轉化為char 的方式

qt幫助文件中給的乙個demo qstring tmp test qbytearray text tmp.tolocal8bit char pch new char text.size 1 strcpy pch,text.data delete data 別的文章中也給出了一些方法 char chs...

QString與char 之間的轉換

qstring與char 之間的轉換 1.qstring轉char 先將qstring轉換為qbytearray,再將qbytearray轉換為char 注意 不能用下面的轉換形式char mm str.tolatin1 data 因為這樣的話,str.tolatin1 得到的qbytearray型...

關於QString與Char 的轉換

圈錯了 char smsg 100 qstring content ui.textedit toplaintext 文字框獲取,也可以自己寫 strcpy smsg,content.tolatin1 data 我們要經常注意的乙個問題就是 為char msg char陣列進行分配記憶體空間。不然經常...