C ++:从wchar_t *转换为unsigned short *是否安全?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++:从wchar_t *转换为unsigned short *是否安全?相关的知识,希望对你有一定的参考价值。

C ++:从wchar_t *转换为unsigned short *是否安全?

因为我使用的是MSXML2的SAXReader,所以我需要传递unsigned short *的一些方法。我需要传递的值是wchar_t,所以这样做是否安全?

答案

一般来说,强制转换是不安全的,因为严格的别名规则禁止它。

但如果wchar_ttypedefunsigned short,你就会侥幸逃脱。如果是,你可以在编译时使用static_assert强制执行,基于值

std::is_same<whar_t, unsigned short>::value

请注意,这样的实现依赖于您的编译器没有正确实现标准:正式wchar_t具有相同的大小,签名和对齐作为整数类型之一,但是是一种不同的类型。“因此,typedef将不符合要求并且值断言应该总是失败。

参考:http://en.cppreference.com/w/cpp/language/types

以上是关于C ++:从wchar_t *转换为unsigned short *是否安全?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 c 中初始化数组 |警告:从 long 转换为 long unsigned

wchar_t到unsigned char转换

C++ fmtlib:如何将双精度转换为现有的 wchar_t 缓冲区?

错误 C2440:“默认参数”:无法从“const wchar_t [1]”转换为“BSTR”

Atollic TrueSTUDIO:如何从 C 转换为 C++?

将增量为 25 的“for”循环从 C 转换为 MATLAB