c++ - 将字符串转换为字符指针

标签 c++ qt

我想将 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/

相关文章:

C++ 模板特化因非类型参数包而失败

c++ - 如何从 MS Word 2007 中获取枚举类型的值?

c++ - QT4:带圆角的透明窗口

c++ - Qt:显示用户/客户列表并在单击时显示个人资料

c++ - 旋转图像会导致 Qt 失真

c++ - 带有进度条的 Web 请求

c++ - 这个 C++ 代码会一直按我的预期工作,还是不能保证执行顺序?

c++ - (ptr + i)->Func() 和 &ptr[i].Func() 之间有什么区别吗

c++ - 在特定显示器上为 GL 打开 X11 窗口

c++ - char * 持有整数的动态内存分配