является вторым аргументом в размере vswprintf_s буфера или числа элементов

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);

Дай мне знать.

2

Решение

Это количество элементов.

Если вы посмотрите на более свежую версию документации MSDN (удалите (v=vs.80) часть URL, которую вы цитировали), он говорит:

numberOfElementsРазмер буфера в символах.

(А «символы» означают логические символы (фактически, единицы кода), а не charс.)

Обычно «широкие» версии функций Windows используют количество символов, а не размеры байтов.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]