qt 复制字符串_Qt字符串处理 QString用法总结(一)
下面分兩種情況進(jìn)行說明。
一、QString 轉(zhuǎn)換為 char *
將 QString 轉(zhuǎn) char *,需要用到 QByteArray 類,QByteArray 類的說明詳見 Qt 幫助文檔。
因?yàn)?char * 最后都有一個(gè)'\0'作為結(jié)束符,而采用?QString::toLatin1()?時(shí)會(huì)在字符串后面加上'\0'。
方法如下:
QString str;char*ch;
QByteArray ba= str.toLatin1(); //must
ch=ba.data();
這樣就完成了 QString 向 char * 的轉(zhuǎn)化。經(jīng)測試程序運(yùn)行時(shí)不會(huì)出現(xiàn) bug。注意第 3 行,一定要加上,不可以 str.toLatin1().data() 這樣一步完成,否則可能會(huì)出錯(cuò)。
補(bǔ)充:以上方法當(dāng) QString 里不含中文時(shí),沒有問題,但是 QString 內(nèi)含有中文時(shí),轉(zhuǎn)換為 char * 就是亂碼,采用如下方法解決:
方法 1:
添加 GBK 編碼支持:
#include QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
然后將上面的第 3 行修改為:
QByteArray ba = str.toLocal8Bit(); //toLocal8Bit 支持中文
方法 2:
先將 QString 轉(zhuǎn)為標(biāo)準(zhǔn)庫中的 string 類型,然后將 string 轉(zhuǎn)為 char *。如下:
QString filename;
std::string str =filename.toStdString();const char* ch = str.c_str();
二、 char * 轉(zhuǎn)換為 QString
將 char * 轉(zhuǎn)換為 QString 比較容易操作,我們可以使用 QString 的構(gòu)造函數(shù)進(jìn)行轉(zhuǎn)換:
QString(const QLatin1String &str);
QLatin1String 的構(gòu)造函數(shù):
QLatin1String(const char *str);
因此用下面這個(gè)語句就可以將 char * ch 轉(zhuǎn)換為 QString str 了,如下:
str = QString(QLatin1String(ch));
總結(jié)
以上是生活随笔為你收集整理的qt 复制字符串_Qt字符串处理 QString用法总结(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python字符串_python字符串格
- 下一篇: ios html 禁止下拉,ios禁止页