【问题标题】:Convert int to LPCWSTR by using wsprintf使用 wsprintf 将 int 转换为 LPCWSTR
【发布时间】:2013-11-22 00:57:15
【问题描述】:

如下代码:

int a = 16;
wchar_t *buffer = {0};
wsprintf(buffer,L"%d", a);

MessageBox(NULL, buffer, buffer, MB_OK);

我想将 int 转换为 LPCWSTR 以便放置 MessageBox。 我真的是使用 wsprintf 的新手。任何人都可以帮助我使用此功能为我解释清楚??? (拜托,我也看过 MSDN 但还是不太清楚)

我的意思是,我想在 MessageBox 中打印“16”

【问题讨论】:

  • wsprintfsprintf() 具有相同的要求。你需要一个有效的地址来写你的输出,而且你肯定不会用wchar_t *buffer = {0}; 提供它,如果你不知道,wsprintf() 是 Microsoft Windows 的主义,不要与 @ 混淆987654321@,标准库中sprintf() 的宽字符版本。

标签: c++ api


【解决方案1】:

您将buffer 初始化为nullptr。只需创建一个为您分配足够空间的wchar_ts 数组,您就可以摆脱困境:

int a = 16;
wchar_t buffer[256];
wsprintfW(buffer, L"%d", a);
MessageBoxW(nullptr, buffer, buffer, MB_OK);

【讨论】:

  • +1 用于 Windows API 的强制宽字符版本。 (当然还有关于拥有有效写入缓冲区的推动)。
猜你喜欢
  • 2012-12-19
  • 2010-09-23
  • 2011-11-13
  • 2013-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
相关资源
最近更新 更多