_vscwprintf的安全替代品

时间:2011-11-15 23:45:22

标签: string visual-c++ strsafe

在MSVC中,许多字符串函数提供原始版本,安全版本和strsafe版本。例如,sprintfsprintf_sStringCchPrintf都是等价物,安全性提高(按某种指标)。

现在,我有一些代码可以做到:

int bufsize = _vscwprintf(fmt, args) + 1;
std::vector<wchar_t> buffer(bufsize);

int len = _vsnwprintf_s(&buffer[0], bufsize, bufsize-1, fmt, args);

分配正确大小的缓冲区。

在查看strsafe函数时,我找到了_vsnwprintf_s的替代方法,但_vscwprintf没有替代方法。检查谷歌似乎没有返回任何东西。

是否有一种编写代码的strsafe方式,或者我缺少的两种替代函数,或者是否可以接受原始和strsafe函数? (没有给出关于当前方式的安全警告,在/ w4上使用PREfast所有规则)

1 个答案:

答案 0 :(得分:2)

_vscwprintf()仅计算安全格式化字符串所需的wchar_t []数组的大小,它实际上并未向缓冲区写入任何内容。因此,您不需要,并且没有该功能的安全版本。