_itoa_s, _i64toa_s, _ui64toa_s, _itow_s, _i64tow_s, _ui64tow_s

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Convierte un entero en cadena. Estas versiones de _itoa, _i64toa, _ui64toa, _itow, _i64tow, _ui64tow tienen mejoras de seguridad, como se describe en Características de seguridad de 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  

Parámetros

[in] value
Número que se va a convertir.

[out] buffer
Relleno con el resultado de la conversión.

[in] sizeInCharacters
Tamaño del búfer en caracteres o caracteres anchos de solo- byte.

[in] radix
Base de value; debe estar comprendido entre 2 y 36.

Devuelve cero si se ejecuta correctamente; devuelve un código de error si se produce un error. Si se aplican las condiciones de cualquiera de las siguientes, la función invoca un controlador no válido de parámetro, tal y como se describe en Validación de parámetros.

Condiciones de error

predeterminadobuffersizeInCharactersbaseDevolución
anyNULLanyanyEINVAL
anyany<=0anyEINVAL
anyany<= longitud de la cadena de resultado necesariaanyEINVAL
anyanyanyradix < 2 o radix > 36EINVAL

Problemas de seguridad

Estas funciones pueden generar una infracción de acceso si buffer no señala memoria válida y no es NULL, o si la longitud del búfer no es de tiempo suficiente para contener la cadena de resultado.

Salvo los parámetros y el valor devuelto, las funciones de _itoa_s tienen el mismo comportamiento que corresponder versiones menos seguro.

En C++, el uso de estas funciones se simplifica con las sobrecargas de plantilla; las sobrecargas pueden realizar una inferencia automáticamente de la longitud de búfer (lo que elimina la necesidad de especificar un argumento de tamaño) y pueden reemplazar automáticamente funciones anteriores no seguras con sus homólogos seguros más recientes. Para obtener más información, vea Sobrecargas de plantilla seguras.

Las versiones de depuración de estas funciones rellenan primero el búfer con 0xFD. Para deshabilitar este comportamiento, use _CrtSetDebugFillThreshold.

Asignaciones de rutina de texto genérico

Rutina Tchar.h_UNICODE y _MBCS no definidos_MBCS definido_UNICODE definido
_itot_s_itoa_s_itoa_s_itow_s
_i64tot_s_i64toa_s_i64toa_s_i64tow_s
_ui64tot_s_ui64toa_s_ui64toa_s_ui64tow_s
RutinaEncabezado necesario
_itoa_s<stdlib.h>
_i64toa_s<stdlib.h>
_ui64toa_s<stdlib.h>
_itow_s<stdlib.h> o <wchar.h>
_i64tow_s<stdlib.h> o <wchar.h>
_ui64tow_s<stdlib.h> o <wchar.h>

Para obtener más información sobre compatibilidad, vea Compatibilidad en la introducción.

// 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)) );  
    }  
}  

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)  

System::Convert::ToString

Conversión de datos
_ltoa, _ltow
_ultoa, _ultow

Mostrar: