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

让我知道。

最佳答案

这是元素的数量。

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



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

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

关于c++ - 是vswprintf_s缓冲区大小或numberofElements的第二个参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16732806/

10-09 13:41