如何将QString转换为char *或者相反

 我来答
百度网友3a37bfb
推荐于2016-03-07 · TA获得超过6952个赞
知道大有可为答主
回答量:1万
采纳率:95%
帮助的人:5046万
展开全部
#define G2U(s) ( QTextCodec::codecForName("GBK")->toUnicode(s) )
#define U2G(s) ( QTextCodec::codecForName("GBK")->fromUnicode(s) )QString str;
QCString cstr;str = G2U("中文输入");
cstr = U2G(str);QCString有这样一个重载运算符
operator const char * () const可以这样
printf("%s\n", (const char*) cstr);
或是copy出来
char buf[1024];
strcpy(buf, (const char*) cstr);方法二 -----------------------------------------
如果是中文系统直接用 (const char*) str.local8Bit()例如printf("%s", (const char*) str.local8Bit());str是一个QString
方法三 -----------------------------------------
char str[64];
QTextCodec *textcod = QTextCodec::codecForName("GBK");
QCString string1 = textcod ->fromUnicode(listbox1->currentText());
strcpy(str,string1);QString和Std::string从char*到 QString可以从fromLocal8Bit()转化
std::string有c_str()的函数使再转化为char*QString有toAscii()记不清了你可以看看. 又是我的粗心酿成大错,我重新查看了一下Qt文档,原来Qt可以直接从std::wstring产生一个QString,用QString::fromStdWString(const std::wstring &)这个静态成员函数即可。我试了试用std::string的c_str()返回的char *构造的QString不能再保存原先的中文信息,而用std::wstring构造的QString则可以用qDebug()输出原先的中文信息 GB编码与UTF8编码的转换
在主函数app后加上这句:QUOTE:QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030"));然后是从UTF8编码到GB编码的字符串转换方法:QUOTE:QString Utf8_To_GB(QString strText){return QString::fromUtf8(strText.toLocal8Bit().data());
}至于从GB到UTF8,那大家就经常用了:QUOTE:QString GB_To_Utf8(char *strText){return QString::fromLocal8Bit(strText);
} 剖析Qt 各种数据类型转换Qt 各种数据类型转换是本文介绍的内容,对于类型不同的转换,本人认为还是很好实现的。先来看内容。AD: 本文介绍的是Qt 各种数据类型转换,病没有多少内容,只是实例操作了一下,多多参考!如果你是初学者的话。在编程的过程中,总是不断的去转换数据类型。先来看看内容。1、QString --> stringQString.toStdString();2、string --> QStringQString::fromStdString(string)3、QString --->int,double,char *QString::toInt()QString::toDouble()QString.toStdString().c_str();
QString.toLocal8Bit().data(); 这个要好4、int double char* --->string可以采用里的stringstream以int 为例,int a = 3;stringstream ss;string strInt;ssstrInt;其他两个一样。5、int double char*装QString一种方法可以先转string,再转QString。另一种方法可以查看QString类的函数。QString::number()这个静态函数,参数可以是int,也可以是double。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式