我想将QString
转换为char*
。
我该怎么做?
感谢。
答案 0 :(得分: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();
答案 1 :(得分:5)
char * s = qtString.toStdString().c_str();