我想将 QString
转换成 char*
。
我该怎么做?
谢谢。
最佳答案
使用 toAscii/toLatin1/toUtf8 QString 方法获取纯字符数组 (QByteArray)。您需要哪种方法取决于您希望字符数据采用的编码。对于其他编码,请参见 QTextCodec。从 QByteArray 中,您可以使用 QByteArray::constData() 获取 const char* 或使用 QByteArray::data() 获取 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();
关于c++ - 将字符串转换为字符指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5447740/