Partager via


_itoa_s, _i64toa_s, _ui64toa_s, _itow_s, _i64tow_s, _ui64tow_s

Convertit un entier en chaîne. Il s'agit de versions de _itoa, _i64toa, _ui64toa, _itow, _i64tow, _ui64tow avec des améliorations de sécurité, comme décrit dans Fonctionnalités de sécurité dans le CRT.

errno_t _itoa_s(
   int value,
   char *buffer,
   size_t sizeInCharacters,
   int radix 
);
errno_t _i64toa_s(
   __int64 value,
   char *buffer,
   size_t sizeInCharacters,
   int radix 
);
errno_t _ui64toa_s(
   unsigned _int64 value,
   char *buffer,
   size_t sizeInCharacters,
   int radix 
);
errno_t _itow_s(
   int value,
   wchar_t *buffer,
   size_t sizeInCharacters,
   int radix 
);
errno_t _i64tow_s(
   __int64 value,
   wchar_t *buffer,
   size_t sizeInCharacters,
   int radix 
);
errno_t _ui64tow_s(
   unsigned __int64 value,
   wchar_t *buffer,
   size_t sizeInCharacters,
   int radix 
);
template <size_t size>
errno_t _itoa_s(
   int value,
   char (&buffer)[size],
   int radix 
); // C++ only
template <size_t size>
errno_t _itow_s(
   int value,
   wchar_t (&buffer)[size],
   int radix 
); // C++ only

Paramètres

  • [in] value
    Nombre devant être converti.

  • [out] buffer
    Rempli avec le résultat de la conversion.

  • [in] sizeInCharacters
    Taille de la mémoire tampon en caractères codés sur un octet ou en caractères larges.

  • [in] radix
    Base de value; qui doit être comprise entre 2-36.

Valeur de retour

Zéro si l'opération a réussi ; code d'erreur en cas de échec. Si l'une des conditions suivantes s'applique, la fonction appelle un gestionnaire de paramètre non valide, comme décrit dans Validation de paramètre.

Conditions d'erreur

par défaut

buffer

sizeInCharacters

.radix

Return

any

NULL

any

any

EINVAL

any

any

<=0

any

EINVAL

any

any

<= longueur de la chaîne de résultats requise

any

EINVAL

any

any

any

radix < 2 ou radix > 36

EINVAL

Problèmes de sécurité

Ces fonctions peuvent générer une violation d'accès si buffer ne pointe pas vers de la mémoire valide et n'est pas NULL, ou si la longueur de la mémoire tampon n'est pas assez longue pour conserver la chaine résultante.

Notes

À l'exception des paramètres et de la valeur de retour, les fonctions _itoa_s ont le même comportement que les versions moins sécurisées correspondantes.

En C++, l'utilisation de ces fonctions est simplifiée par les surcharges de modèle ; les surcharges peuvent déduire la longueur de la mémoire tampon automatiquement (ce qui évite d'avoir à spécifier un argument taille) et peuvent remplacer automatiquement les fonctions plus anciennes et non sécurisées par leurs équivalentes plus récentes et sécurisées. Pour plus d'informations, consultez Sécuriser les surcharges de modèle.

Les versions debug de ces fonctions remplissent d'abord la mémoire tampon avec 0xFD. Pour désactiver ce comportement, utilisez _CrtSetDebugFillThreshold.

Mappages de routines de texte générique

Routine Tchar.h

_UNICODE et _MBCS non définis

_MBCS défini

_UNICODE défini

_itot_s

_itoa_s

_itoa_s

_itow_s

_i64tot_s

_i64toa_s

_i64toa_s

_i64tow_s

_ui64tot_s

_ui64toa_s

_ui64toa_s

_ui64tow_s

Configuration requise

Routine

En-tête requis

_itoa_s

<stdlib.h>

_i64toa_s

<stdlib.h>

_ui64toa_s

<stdlib.h>

_itow_s

<stdlib.h> ou <wchar.h>

_i64tow_s

<stdlib.h> ou <wchar.h>

_ui64tow_s

<stdlib.h> ou <wchar.h>

Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.

Exemple

// crt_itoa_s.c
#include <stdlib.h>
#include <string.h>

int main( void )
{
    char buffer[65];
    int r;
    for( r=10; r>=2; --r )
    {
       _itoa_s( -1, buffer, 65, r );
       printf( "base %d: %s (%d chars)\n", r, buffer, strnlen(buffer, _countof(buffer)) );
    }
    printf( "\n" );
    for( r=10; r>=2; --r )
    {
       _i64toa_s( -1L, buffer, 65, r );
       printf( "base %d: %s (%d chars)\n", r, buffer, strnlen(buffer, _countof(buffer)) );
    }
    printf( "\n" );
    for( r=10; r>=2; --r )
    {
       _ui64toa_s( 0xffffffffffffffffL, buffer, 65, r );
       printf( "base %d: %s (%d chars)\n", r, buffer, strnlen(buffer, _countof(buffer)) );
    }
}

Sortie

base 10: -1 (2 chars)
base 9: 12068657453 (11 chars)
base 8: 37777777777 (11 chars)
base 7: 211301422353 (12 chars)
base 6: 1550104015503 (13 chars)
base 5: 32244002423140 (14 chars)
base 4: 3333333333333333 (16 chars)
base 3: 102002022201221111210 (21 chars)
base 2: 11111111111111111111111111111111 (32 chars)

base 10: -1 (2 chars)
base 9: 145808576354216723756 (21 chars)
base 8: 1777777777777777777777 (22 chars)
base 7: 45012021522523134134601 (23 chars)
base 6: 3520522010102100444244423 (25 chars)
base 5: 2214220303114400424121122430 (28 chars)
base 4: 33333333333333333333333333333333 (32 chars)
base 3: 11112220022122120101211020120210210211220 (41 chars)
base 2: 1111111111111111111111111111111111111111111111111111111111111111 (64 chars)

base 10: 18446744073709551615 (20 chars)
base 9: 145808576354216723756 (21 chars)
base 8: 1777777777777777777777 (22 chars)
base 7: 45012021522523134134601 (23 chars)
base 6: 3520522010102100444244423 (25 chars)
base 5: 2214220303114400424121122430 (28 chars)
base 4: 33333333333333333333333333333333 (32 chars)
base 3: 11112220022122120101211020120210210211220 (41 chars)
base 2: 1111111111111111111111111111111111111111111111111111111111111111 (64 chars)

Équivalent .NET Framework

System::Convert::ToString

Voir aussi

Référence

Conversion de données

_ltoa, _ltow

_ultoa, _ultow