【问题标题】:String cast to const char* [duplicate]字符串转换为 const char* [重复]
【发布时间】:2020-05-08 06:00:15
【问题描述】:

我在我的项目中使用 QString,但在某些情况下,我必须将其传输到外部 SDK,该 SDK 期望以 null 终止的 const char*。为此我使用:

QByteArray folderName = ((QDataItem*)(*it))->GetName().toUtf8();
folderName.append('\0');
dir.lpszDir = folderName;

这里的投射方式正确吗?我想我必须用动态投射来投射它?或者有没有更好的方法将“GetName()”带入 const char*?

【问题讨论】:

  • 我在list of Qt classes 中看不到QDataItem。它是什么/它来自哪里?
  • folderName.constData() 可能是正确的选择,如果生命周期匹配。
  • @hyde ... QT 告诉我它不兼容。将 qchar * 分配给 const char*
  • @ingo 你现在省略了一些相关的东西,因为QByteArray::constData() 肯定会返回,const char*
  • 这能回答你的问题吗? QString to char* conversion

标签: c++ qt


【解决方案1】:

我在我的项目中就是这样做的。

 QString stringMessage = "something";
 char* charMessage = new char[stringMessage.size() + 1];

 std::memcpy(charMessage, stringMessage.toLocal8Bit().data(), static_cast<size_t>(stringMessage.size() + 1));

【讨论】:

  • 你没有为charMessage分配内存
  • 我的错。我已经修好了。
猜你喜欢
  • 2013-07-25
  • 2014-05-16
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 2012-10-03
  • 1970-01-01
相关资源
最近更新 更多