【问题标题】:is second argument in vswprintf_s size of buffer or numberofElements是缓冲区或 numberofElements 的 vswprintf_s 大小中的第二个参数
【发布时间】:2013-05-19 22:15:18
【问题描述】:

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

告诉我。

【问题讨论】:

    标签: c++ printf msdn wchar-t


    【解决方案1】:

    这是元素的数量。

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

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

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

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

    【讨论】:

    • 谢谢@jamesdlin 这有帮助!
    猜你喜欢
    • 2013-06-14
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    相关资源
    最近更新 更多