将sting转换为char指针

tar*_*riq 0 c++ qt

我想转换QStringchar*.

我该怎么做?

谢谢.

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)


小智 5

char * s = qtString.toStdString().c_str();
Run Code Online (Sandbox Code Playgroud)