【问题标题】:How to strncpy() to WCHAR如何将 strncpy() 转换为 WCHAR
【发布时间】:2012-09-06 16:07:13
【问题描述】:

我得到了一段在多字节字符集下工作的代码。但是,我想将这段代码转换为 UNICODE。所以我修复了很多东西,但在 strncpy() 行失败了。这是我要更改的行:

strncpy(a.szTip, szToolTip, bLength);

我使用了很多函数来解决这个问题,但都失败了。

这是错误:

strncpy cannot convert parameter 1 from WCHAR[128] to char *

【问题讨论】:

  • strncpy() 将复制字节,直到找到值为 0 的字节(或达到指定的最大字节数),然后停止复制。因此,即使您强制转换参数以使其编译,它也可能不会执行您想要的操作 - 特别是,任何一个字节包含零的多字节字符都会导致 strncpy() 不复制字符串的其余部分。也许您想改用 wstrncpy()?

标签: c++ c unicode strncpy


【解决方案1】:

处理宽字符时,使用wcsncpy()(和其他相关函数)。

正如 Remy Lebeau 所指出的,如果您想同时支持 ANSI 和 Unicode 构建(它分别扩展到正确的功能),使用 _tcsncpy() 宏会更安全。

【讨论】:

  • 在处理 Win32 API TCHAR 值(szTip 是)时,请改用 _tcsncpy() 或 wsprintf()。
  • 啊,我不知道szTip 是什么。谢谢。
猜你喜欢
  • 2014-08-23
  • 1970-01-01
  • 2018-06-02
  • 2012-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
相关资源
最近更新 更多