是vswprintf_s缓冲区或numberofElements大小的第二个参数

时间:2013-05-24 10:23:49

标签: c++ printf msdn wchar-t

vswprintf_s:msdn link

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

让我知道。

1 个答案:

答案 0 :(得分:2)

这是元素的数量。

如果您查看更新版本的MSDN文档(删除您引用的网址的(v=vs.80)部分),则会显示:

  

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

(“字符”表示逻辑字符(实际上是代码单位),而不是char s。)

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