我需要为格式函数vswprintf()分配足够的缓冲区。当使用ANSI字符串做同样的事情时,我正在使用:如何在Linux下确定vswprintf的缓冲区大小gcc
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字符串所需的缓冲区大小?
问候 Ludek一起
'vfwprintf'而不是'vfprintf',但无论如何+1。并记住使用va_list的副本。 – 2010-11-13 02:57:17
谢谢你的提示。该解决方案的缺点是比原始函数vswprintf慢5倍。所以我将使用这个函数用于* nix系统,但是对于Win系统来说这是原始的函数。谢谢 – 2010-12-01 11:16:15