【问题标题】:how to prevent wcscpy() function to stop copying data from spaces inbetween?如何防止 wcscpy() 函数停止从空格之间复制数据?
【发布时间】:2015-10-23 09:13:15
【问题描述】:

我正在使用类似的语句

TCHAR path="";
wcscpy(path,_T("C:\\Users\\user\\Desktop\\Filename.ext"));

但是它被复制在每个字符之间都有空格。我该如何防止它?

【问题讨论】:

  • 你能提供一些可编译的例子来重现这个问题吗?
  • 您是否忘记转义反斜杠或者这只是一个错字?
  • 它是一个巨大项目的一部分。只需要澄清这部分。向我提问以进一步明确。我必须严格只使用 unicode 字符集。只是想知道是否有任何其他功能可以在没有空格的情况下复制。
  • @ Mohamad Elghawi : 这只是一个错字
  • 如何显示结果?另外,不要将wcscpyTCHAR_T 一起使用,请使用_tcscpy

标签: c++ unicode


【解决方案1】:

没有看到字符之间的空格。

wchar_t 在 Windows 上为 2 字节(在其他平台上为 4 字节)。如果你想用它来保存任何 ASCII 字符(即:字符 0-127,只需要 1 个字节),你会看到第一个字节保存字符值,而附加字节保存 NULL字节,因为我们只需要 1 个字节来保存值(或者更准确地说是 7 位)。如果您将字符串数据视为 8 位而不是 16 位/32 位,则这些 NULL 将显示为空格。

如果您不想这样,请改用char 类型。

在 Windows 上,建议使用 wchar_tstd::wstring 而不是 charstd::string,尤其是在使用 Win32 API 时,因为它无论如何都会将多字节字符串转换为宽字符串。

【讨论】:

  • 查看post 以获得更详细的说明。
猜你喜欢
  • 1970-01-01
  • 2014-06-18
  • 2018-08-15
  • 2011-11-04
  • 2014-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多