官方说明:
How can I convert aQString to char* and vice versa ?(trolltech)
Answer:
In order to convert aQString to a char*, then you first need to get a latin1 representation of thestring by calling toLatin1() on it which will return a QByteArray. Then calldata() on the QByteArray to get a pointer to the data stored in the byte array.See the documentation:
See the following examplefor a demonstration:
int main(int argc, char**argv)
{
QApplication app(argc, argv);
QString str1 = "Test";
QByteArray ba = str1.toLatin1();
const char *c_str2 = ba.data();
printf("str2: %s", c_str2);
return app.exec();
}
Note that it is necessaryto store the bytearray before you call data() on it, a call like the following
const char *c_str2 =str2.toLatin1().data();
will make the applicationcrash as the QByteArray has not been stored and hence no longer exists.
To convert a char* to aQString you can use the QString constructor that takes a QLatin1String, e.g:
QString string =QString(QLatin1String(c_str2)) ;
切记:
注意在调用QByteArray.data()之前,必须要先显示储存这个bytearray。像这样const char *c_str2 = str2.toLatin1().data();
会使程序崩溃,因为QByteArray没有被储存,调用data()前是不存在的,必须先显式调用一次toLatin1(),再调用data()。
要将char*转换成QString,用接收QLatin1String作参数的QString构造函数就可以了:
QString string =QString(QLatin1String(c_str2)) ;