使用 wmemset 初始化 wchar_t 数组。编码重要吗?

Initialization of a wchar_t array with wmemset. Does encoding matter?

如何使用 wmemset 正确初始化 wchar_t 数组? 我应该使用 '\0' 还是 L'\0' ?有关系吗? 编码重要吗? (unicode, ISO####)

例如

wchar_t arr[20];
wmemset(arr, '[=11=]', sizeof(arr));

您需要使用 L'' 形式来获取 wchar_t 类型,尽管任何适合 char 的值(例如 '[=13=]')都会被自动使用通常的整数提升转换。参见 character literal or C++ Character Literals

我不清楚源代码将在哪个代码页中解释。为了安全起见,最好使用 L'\u20ac'L'\U000020ac' 形式来指定 ASCII 字符集之外的字符。