【问题标题】:Converting QString to PCWSTR on Windows在 Windows 上将 QString 转换为 PCWSTR
【发布时间】:2021-10-12 21:28:57
【问题描述】:

为什么this answer 中的以下代码有效:

QString username = "Bond";
std::wstring username = username.toStdWString();
PCWSTR username = username.c_str();

当以下情况不存在时:

QString username = "Bond";
PCWSTR username = username.toStdWString().c_str();

【问题讨论】:

  • 吹毛求疵:你的代码在任何情况下都不会编译 - 你有重复的变量名称。

标签: c++ windows qt


【解决方案1】:

rpress 的答案当然是正确的。然而,我正在使用这种转换:

const QString usernameStr = "Bond";
auto usernameStrPtr = reinterpret_cast<PCWSTR>(usernameStr.utf16());

在大多数情况下,这将避免不必要的分配和转换为std:wstring。我假设您的预期编码无论如何都是 UTF16...

【讨论】:

  • 当我偶然发现这个问题时,我正试图避免这种不必要的分配,所以这是一种有用的方法
【解决方案2】:

临时对象被销毁,c_str() 的结果在那之后无效。

【讨论】:

  • 传奇!即使在使用 C++ 多年之后,这样的事情仍然令人惊讶
猜你喜欢
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-30
  • 2019-12-23
  • 2011-08-21
  • 2012-04-01
  • 1970-01-01
相关资源
最近更新 更多