QString-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()

来自 http://blog.sina.com.cn/s/blog_9454bfec0102x87u.html

你可能感兴趣的:(qt,类型转换)