在 MSVC 中,许多字符串函数提供原始版本、安全版本和strsafe版本。例如,sprintf
、sprintf_s
和StringCchPrintf
都是等价的,增加了安全性(通过某种度量)。
现在,我有一些代码可以做到:
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 所有规则)