Je dois allouer un tampon suffisant pour la fonction de formatage vswprintf(). En faisant la même chose avec la chaîne ANSI, j'utilise:Comment déterminer la taille du tampon pour vswprintf sous Linux gcc
vsnprintf(NULL, NULL, pszFormat, args);
qui me renvoie la taille d'un tampon. Mais il semble que la version Unicode de cette fonction n'a pas cette fonctionnalité. Lorsque j'exécute:
vswprintf(NULL, NULL, pszFormat, args);
La valeur du résultat est toujours -1.
Seule la solution que j'ai trouvée utilise un grand tampon statique pour le calcul de la taille requise. Mais je n'aime pas cette solution:
static const int nBuffSize = 1024;
static XCHAR evalBuff[nBuffSize];
int nSize = vswprintf(evalBuff, nBuffSize, pszFormat, args);
if (nSize != -1)
{
return nSize;
}
else
{
throw XXX;
}
Est-il possible comment mesurer la taille requise de la mémoire tampon pour les chaînes unicode?
Cordialement Ludek
'vfwprintf' plutôt que' vfprintf', mais +1 de toute façon. Et n'oubliez pas d'utiliser une copie de la liste va_list. –
Merci pour ce conseil. Seul inconvénient de cette solution est 5 fois plus lent que la fonction originale vswprintf.Donc, je vais utiliser cette fonction pour les systèmes * nix, mais la fonction d'origine pour le système Win. Merci –