qstring转qchar_QString-QChar-char 之间转换

DATA: 2012-08-31

CONTEXT: QString QChar char

重点:掌握 QString 转换成 char *

收集者:陈燕辉 漳浦一中 深圳大学 北京大学

1、QString 转换成 char *

方法:

QString Qstr = "Test";

QByteArray ba = Qstr.toLatin1();

或者 QByteArray ba = Qstr.toAscii();

const char *c_str = ba.data(); //为何要使用const 应该跟使用Qt版本有关

明智做法:

char *chStr = NULL;

QByteArray ba = str.toLatin1();

chStr = (char *)malloc(ba.length() + 1);

memset(chStr, 0, ba.length());

memcpy(chStr, ba.data(), ba.length());

chStr[ba.length()] = '\0';

错误做法:const char *c_str = Qstr.toLatin1().data();

【原因】首先需要分析QString转为char*到底做了些什么事?

Qstr.toLatin1()其实是将内容传到QByteArray,再由QByteArray.data()将内存指针传出

来,所以若Qstr.toLatin1().data()这样串行用的时候,QByteArray的生命期已经结束,后

面有可能做的操作无关该块栈内存。但是有可能操作会冲掉栈内存数据,就会导致得到并

不是我们想要的数据。

2、char * 转换成 QString

方法、char *c_str = "123456789";

QString string = QString(QLatin1String(c_str));

3、QString 转换成 QChar(一般要数组来存哦)

方法:

直接调用 const QChar * QString::data () const

或者 QChar *QString::data()

For Example: QString str = "123cycy";

QChar *b = new QChar[7];

b = str.data();

b[0]~b[6]就能读取相对应的字符

4、QChar 转换成 QString

方法:

直接使用 QString(QChar ch)即可

或者QString::append(QChar ch)也行

5、QChar 转换成 char

方法:

使用char QChar::toLatin1() / char QChar::toAscii () const

char ch;

QChar Qch;

ch = QCh.toLatin1;

6、char 转换成 QChar

方法:

QChar(char ch) /QChar(uchar ch)

7、QString 转换成 数字

方法:

QString::toXXX 系类函数

8、数字 转换成 QString

方法:

QString::number()

setNum()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值