将字符串转换为char指针

时间:2011-03-27 07:04:33

标签: c++ qt

我想将QString转换为char*

我该怎么做?

感谢。

2 个答案:

答案 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();