一、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::stringstr= filename.tostdstring();
const二、 char * 轉換為 qstringchar
* ch =
str.c_str();
方法三:
strcpy(ch,ui->lineeditline->text.tostdstring.data());//對於中文字元
將 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陣列進行分配記憶體空間。不然經常...