String vscwprintf的安全替代方案

String vscwprintf的安全替代方案,string,visual-c++,strsafe,String,Visual C++,Strsafe,在MSVC中,许多字符串函数提供原始版本、安全版本和安全版本。例如,sprintf、sprintf\u s和StringCchPrintf都是等价物,安全性有所提高(以某种标准衡量) 现在,我有一段代码可以: int bufsize = _vscwprintf(fmt, args) + 1; std::vector<wchar_t> buffer(bufsize); int len = _vsnwprintf_s(&buffer[0], bufsize, bufsize-1

在MSVC中,许多字符串函数提供原始版本、安全版本和安全版本。例如,
sprintf
sprintf\u 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);
int bufsize=_vscwprintf(fmt,args)+1;
std::向量缓冲区(bufsize);
int len=_vsnwprintf_s(&buffer[0],bufsize,bufsize-1,fmt,args);
分配正确大小的缓冲区

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

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

\u vscwprintf()仅计算安全格式化字符串所需的wchar\u t[]数组的大小,实际上它不会将任何内容写入缓冲区。因此,您不需要,也没有安全版本的函数