2

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

让我知道。

4

1 回答 1

2

这是元素的数量。

如果您查看 MSDN 文档的更新版本(删除(v=vs.80)您引用的 URL 部分),它会说:

numberOfElements:缓冲区的大小(以字符为单位)。

(并且“字符”是指逻辑字符(实际上是代码单元),而不是chars。)

通常,Windows 函数的“宽”版本使用字符计数,而不是字节大小。

于 2013-05-24T10:34:52.303 回答