Fra*_*eld 10
使用toAscii/toLatin1/toUtf8 QString方法获取普通字符数组(QByteArray).您需要哪种方法取决于您希望字符数据所在的编码.对于其他编码,请参阅QTextCodec.从QByteArray,您可以使用QByteArray :: constData()或使用QByteArray :: data()的char*获取const char*.尽可能使用constData(),因为data()通常会创建一个不必要的副本,除非您需要通过char*修改数据.
另请注意,const char*data = str.toUtf8().constData()可能有效,但是由于在toUtf8()中创建的临时QByteArray在语句结束后立即销毁,因此很危险.由于在销毁字节数组时从constData()返回的char*变为无效,所以应该将字节数组保存在临时变量中,如下所示:
const QByteArray ba = str.toUtf8(); // or toAscii, toLatin1, depending on the encoding you want
const char* data = ba.constData();
Run Code Online (Sandbox Code Playgroud)