QString 到 char\* 的转换

新手上路,请多包涵

我试图通过以下方法将 QString 转换为 char* 类型,但它们似乎不起作用。

 //QLineEdit *line=new QLineEdit();{just to describe what is line here}

QString temp=line->text();
char *str=(char *)malloc(10);
QByteArray ba=temp.toLatin1();
strcpy(str,ba.data());

您能否详细说明这种方法可能存在的缺陷,或者提供一种替代方法?

原文由 mawia 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 803
2 个回答

好吧, Qt FAQ 说:

 int main(int argc, char **argv)
{
 QApplication app(argc, argv);
  QString str1 = "Test";
  QByteArray ba = str1.toLocal8Bit();
  const char *c_str2 = ba.data();
  printf("str2: %s", c_str2);
  return app.exec();
}

所以也许你还有其他问题。这到底是怎么回事?

原文由 Eli Bendersky 发布,翻译遵循 CC BY-SA 4.0 许可协议

Qt 提供了最简单的 API

 const char *qPrintable(const QString &str)
const char *qUtf8Printable(const QString &str)

如果您想要非常量数据指针,请使用

str.toLocal8Bit().data()
str.toUtf8().data()

原文由 user2042397 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题