QString与char *的相互转换

##QString 转换为 char *   将 QString 转 char *,需要用到 QByteArray 类,QByteArray 类的说明详见 Qt 帮助文档。   因为 char * 最后都有一个'\0'作为结束符,而采用 QString::toLatin1() 时会在字符串后面加上'\0'。 方法如下:

QString  str;
char*  ch;
QByteArray ba = str.toLatin1(); // must
ch=ba.data();

注意:

  • 1 不能用下面的转换形式char *mm = str.toLatin1().data();。因为这样的话,str.toLatin1()得到的QByteArray类型结果就不能保存,会出现bug。
  • 2 以上方法当 QString 里不含中文时,没有问题,但是 QString 内含有中文时,转换为 char * 就是乱码.

##char * 转换为 QString 将 char * 转换为 QString 比较容易操作,我们可以使用 QString 的构造函数进行转换:

可以使用QString的构造函数进行转换:QString(const QLatin1String &str);

QLatin1String的构造函数:QLatin1String(const char *str);

则如下语句是将char * mm转换为QString str:

str = QString(QLatin1String(mm));

##例子:

view plain
//#include "myclass.h"  
#include <QtGui/QApplication>  
#include <QtDebug>  
#include <QString>  
 
int main(int argc, char *argv[])  
{  
   QApplication a(argc, argv);  
 
   QString str = “hello”; //QString转char *  
    QByteArray ba = str.toLatin1();  
   char *mm = ba.data();  
   qDebug()<<mm<<endl;  //调试时,在console中输出  
 
     QString nn = QString(QLatin1String(mm)); //char *转QString  
   qDebug()<<nn<<endl;  //调试时,在console中输出  
 
   //MyClass w;  
   //w.show();  
   return a.exec();  
}  

进行调试,在console处输出如下内容:

hello
hello

转载于:https://my.oschina.net/TemetNosce/blog/872078

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值