【问题标题】:string to a LPCTSTR [duplicate]字符串到 LPCTSTR [重复]
【发布时间】:2012-03-25 18:14:33
【问题描述】:

可能重复:
C++ std::string conversion problem on Windows
How to convert std::string to LPCSTR?

我想将一个窗口 ( WM_SETTEXT ) 重命名为其他名称。有一个包含新窗口名称的 std::string 。我需要将 std::string 转换为“LPCTSTR”,这是因为 SendMessage 需要“LPCTSTR”中的名称。

我无法让它工作,有人可以帮我将字符串转换为 LPCTSTR 吗?

【问题讨论】:

标签: c++ windows string


【解决方案1】:

使用std::stringc_str() 方法。这将返回一个 C 字符串,即一个指向以 null 结尾的字符数组的指针。

SendMessage(Handle, WM_SETTEXT, 0, (LPARAM)str.c_str());

如果您正在为 ANSI 编译,这很好。如果您正在为 Unicode 编译,那么您应该使用 wstring 而不是 string。如果是这种情况,只需更改为 wstring,对 SendMessage 的调用就可以完全按照上面的说明进行。

【讨论】:

  • 如果我这样做,那么我的窗口会得到一个奇怪的名称“?????_|”
  • 那是因为 ANSI 和 Unicode 不匹配。如果您以 Unicode 为目标,请使用 wstring。如果您使用 ANSI,请使用 string。我强烈建议您不要在 2012 年使用 ANSI。为 Unicode 构建您的应用程序并使用 wstring。根本不要理会TCHAR,在我看来,它只会让人感到困惑,没有明显的收获。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 2020-04-20
  • 2023-03-09
  • 2013-08-04
  • 1970-01-01
相关资源
最近更新 更多