QT中文的 QString 與 char 轉換

2021-06-23 06:56:25 字數 1110 閱讀 2726

1、qstring 轉換成 char*

qt中要將qstring轉換成char*型別,首先要將其轉換為qbytearray類,再利用qt中qbytearray類封裝的介面將其轉換為char*型別。方法如下:

qstring s;

char *msg;

qbytearray ba = s.tolatin1();

msg = ba.data();

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

注意第三行,一定要加上,不可以s.tolatin1().data()這樣一步完成,可能會出錯。

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

方法1:新增gbk編碼支援:

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

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

然後改變上面的第三行為:qbytearray ba = s.tolocal8bit(); toloacl8bit支援中文 

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

std::string str = filename.tostdstring();

const char* ch = str.c_str();

ps:方法1本人親測可用 

2、中文的char*轉換為qstring

同樣地利用qstring類封裝的介面函式fromlocal8bit()轉換為qstring;

qstring str;

char *msg;

str = qstring::fromlocal8bit(msg);

QString 亂談 3 Qt5與中文

今天,隨著change qstring s default codec to be utf 8 進入qt5的master分支,我們總算可以重新審視一下qt的中文支援問題。20120516更新 建議閱讀qtcore模組維護者thiago macieira 的文章 source code must be...

QString 亂談 3 Qt5與中文

兩個月前,簡單寫過qtextcodec中的setcodecfortr等終於消失了 qt5 在qt論壇上,不少使用者都對去掉這兩個函式表示特別的不了解。為什麼會這樣?我想多少能說明不少使用者對c 中原始碼字符集和執行字符集的不太了解,從而造成對這種函式的依賴或誤用。今天,隨著change qstrin...

Qt中的QString與char 的轉換

對於這些基本的資料型別的轉換有時會弄得我們很頭疼。不會寫,不敢寫,寫了怕錯。雖然現在跑qt下了,這不遇見了第一次需要資料型別轉換的時候了。先說qt中的qstring如何轉char 吧。然後就是char 轉qstring 方法一 qstring string qstring qlatin1string...