日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qt 复制字符串_Qt字符串处理 QString用法总结(一)

發(fā)布時(shí)間:2025/3/15 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt 复制字符串_Qt字符串处理 QString用法总结(一) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

下面分兩種情況進(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。