【问题标题】:How to obtain const char * from QString如何从 QString 获取 const char *
【发布时间】:2013-09-30 12:21:52
【问题描述】:

我从一个使用 UTF8 编码的 XML 文件中读取了一个字符串。我将此值存储在QString 对象中,并将其与其他一些信息连接起来。我可以在 QtCreator 调试器中看到 QString 持有所需的值。

我需要将此字符串传递给另一个采用const char * 参数的库。请问如何获取const char *?我试过toLocal8bit()toLatin1()toUtf8() 都没有运气。好像我错过了什么......

【问题讨论】:

  • @MinLin:那个线程是关于标准字符串的,not const char*.
  • @LaszloPapp 好吧,答案中的右值是 const char*,只是隐式转换为标准字符串的左值
  • @MinLin:std::string 和 QString 不应混合 IMO,因为它不是必需的。因此,这是一个不同的用例,所以是一个不同的问题。最好在不混合 std 的情况下通过 qt 类型。请参阅下面的答案。
  • @LaszloPapp 好吧,你的答案是正确的。我的意思是在那篇文章中虽然它想要一个标准字符串,但右侧是一个 const char*,我认为那篇文章的读者应该能够弄清楚。

标签: c++ qt qt-creator qstring qtcore


【解决方案1】:

我需要将此字符串传递给另一个采用 const char 的库 * 争论。请问如何获得 const char * ?我试过 toLocal8bit()、toLatin1()、toUtf8() 都没有运气。好像我是 错过了什么……

因为如果你尝试这些,你只会得到一个 QByteArray 而不是 const char*。你可以在你得到的QByteArray 上使用constData() 方法,然后你就会得到想要的结果。

std::stringQString 没有必要混合使用,因此最好不要在此处引入 std::string,而是通过 qt 类型 (QString -> QByteArray -> const char*)。

您在哪里使用toLocal8bit()toLatin1()toUtf8() 取决于您的编码,所以这与这里的主要问题不同。他们都会向您返回QByteArray

注意:您应该避免使用toAscii(),因为它在 Qt 5 中已被弃用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-13
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    相关资源
    最近更新 更多