【发布时间】:2012-10-19 05:37:42
【问题描述】:
我需要为格式化函数 vswprintf() 分配足够的缓冲区。当使用 ANSI 字符串做同样的事情时,我使用的是:
vsnprintf( NULL, NULL, pszFormat, args );
它返回我所需的缓冲区大小。但是这个函数的unicode版本似乎没有这个功能。当我执行时:
vswprintf( NULL, NULL, pszFormat, args );
结果值始终为 -1。
我发现的唯一解决方案是使用大型静态缓冲区来计算所需的大小。但我不喜欢这个解决方案:
static const int nBuffSize = 1024;
static XCHAR evalBuff[nBuffSize];
int nSize = vswprintf( evalBuff, nBuffSize, pszFormat, args );
if ( nSize != -1 )
{
return nSize;
}
else
{
throw XXX;
}
有什么方法可以测量 unicode 字符串所需的缓冲区大小吗?
问候 卢德克
【问题讨论】: