【发布时间】:2018-02-28 09:33:46
【问题描述】:
C++:从 wchar_t* 转换为 unsigned short* 是否安全?
因为我使用的是 MSXML2 的 SAXReader,所以我需要传递 unsigned short* 它的一些方法。我需要传递的值是 wchar_t,所以执行此转换是否安全?
【问题讨论】:
-
一般来说,没有。具体来说,如果
sizeof (wchar_t)等于sizeof (unsigned short),您可能会侥幸成功,但这并不能保证。 -
一些系统将 wchar_t 定义为 unsigned int。
-
@freim:这在 C++ 中是非法的。
wchar_t是一个独特的类型。 (与std::size_t相反,它 可以 是 unsigned int 的 typedef。) -
@MSalters - 我不够清楚,抱歉。我想说的是,在某些系统范围内 char 占用 4 个字节。因此,将 wchar_t* 转换为 unsigned short* 是不安全的,即使编译器允许这种转换。