2015-05-14 5 views
0

Как правильно инициализировать массив wchar_t с помощью wmemset? Должен ли я использовать '\ 0' или L '\ 0'? Это имеет значение? Делает ли кодирование? (Юникод, ISO ####)Инициализация массива wchar_t с помощью wmemset. Имеет ли смысл кодирования?

например

wchar_t arr[20]; 
wmemset(arr, '\0', sizeof(arr)); 

Спасибо. (Извините, если я сделал несколько большой ошибки)

+1

Раньше не слышал о 'wmemset'. Рассматривая документацию, третьим параметром является количество символов, а не байтов, поэтому использование 'sizeof' неверно. –

ответ

1

Вы должны использовать L'' формы, чтобы получить wchar_t тип, хотя любое значение, которое подходит в пределах char (например, '\0') будет автоматически преобразовано с помощью обычных целочисленных акций , См. character literal или C++ Character Literals.

Непонятно, какая кодовая страница будет истолковываться источником. Чтобы быть в безопасности, лучше всего использовать форму L'\u20ac' или L'\U000020ac', чтобы указать символы вне набора символов ASCII.

+0

спасибо за ваш ответ, чтобы помочь мне уточнить, я говорю конкретно о wmemset, ваши ответчики ссылаются на это? Вы говорите, что конечный ноль будет одинаковым с '' \ 0'' и 'L '\ 0''? – thahgr

+0

Да, это именно то, что я говорю. Параметр 'wmemset' является' wchar_t', и если вы дадите 'char', это будет повышаться, так что результат будет таким же. –