vswprintf_s: MSDN ссылка
int vswprintf_s(
wchar_t *buffer,
size_t numberOfElements,
const wchar_t *format,
va_list argptr
);
Я запутался во втором элементе, так как MSDN утверждает, что это будет:
numberOfElements Размер буфера.
Однако имя аргумента говорит об обратном: фактическое количество элементов, которые будут скопированы в выходной буфер
Итак, если бы я имел:
void print(wchar_t* format, ...){
wchar_t outString[1024];
va_list arguments;
va_start(arguments, format);
vswprintf_s(outString, sizeof(outString), format, arguments);
va_end(arguments);
}
Должен ли я иметь это (размер буфера) ИЛИ:
vswprintf_s(outString, sizeof(outString)/sizeof(outString[0]), format, arguments);
Дай мне знать.
Это количество элементов.
Если вы посмотрите на более свежую версию документации MSDN (удалите (v=vs.80)
часть URL, которую вы цитировали), он говорит:
numberOfElements
Размер буфера в символах.
(А «символы» означают логические символы (фактически, единицы кода), а не char
с.)
Обычно «широкие» версии функций Windows используют количество символов, а не размеры байтов.
Других решений пока нет …