Qt 数据类型转换

1. QString 转 char 

QString str("hello");
const char *pstr = str.toStdString().data();

以上书写有很明显的错误,如果:

QString str("hello");

QString str1("world");

const char *pstr = str.toStdString().data();

const char *pstr1 = str1.toStdString().data();

printf("pstr = %s\n" , pstr);

printf("pstr1 = %s\n" , pstr1);

我们会发现pstr 和pstr1打印出的值都是一样的,为什么呢? 应为toStdString()返回的是一个std::string类型,在次我们需要实例化一个string对象,然后调用str.toStdString()函数,最后用string对象调用data()方法。否则程序很容易崩溃!

同样的我们通过QByteArray转char *也是一样的。QString str="abc";
char *ch;
QByteArray ba = str.toLatin1()
ch = ba.data();
在调用QByteArray.data()之前,必须要先显示储存这个bytearray。像这样const char *ch = str.toLatin1().data();会使程序崩溃,因为QByteArray没有被储存,调用data()前是不存在的,必须先显式调用一次toLatin1(),再调用data()。

你可能感兴趣的:(Qt 数据类型转换)