Condividi tramite


_itoa_s, _i64toa_s, _ui64toa_s, _itow_s, _i64tow_s, _ui64tow_s

Converte un intero in una stringa. Queste sono versioni di _itoa, _i64toa, _ui64toa, _itow, _i64tow, _ui64tow con i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in 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

Parametri

  • [in] value
    Numeri da convertire.

  • [out] buffer
    Riempito con il risultato della conversione.

  • [in] sizeInCharacters
    La dimensione del buffer in caratteri a byte singolo o di tipo wide.

  • [in] radix
    Base di value; il quale deve essere compreso tra 2 e 36.

Valore restituito

Zero se ha esito positivo; un codice di errore in caso di errore. Se una qualsiasi delle condizioni seguenti è applicata, la funzione invoca un gestore non valido di parametro, come descritto in Convalida dei parametri.

Condizioni di errore

predefinito

buffer

sizeInCharacters

radix

Restituzione

any

NULL

any

any

EINVAL

any

any

<=0

any

EINVAL

any

any

<= lunghezza della stringa di risultato richiesta

any

EINVAL

any

any

any

radix < 2 o radix > 36

EINVAL

Problemi relativi alla sicurezza

Queste funzioni possono generare una violazione di accesso se buffer non punta alla memoria valida e non è NULL, oppure se la lunghezza del buffer non è sufficientemente lunga da contenere la stringa di risultato.

Note

Ad eccezione dei parametri e il valore restituito, le funzioni di _itoa_s hanno lo stesso comportamento come le corrispondenti versioni meno sicure.

In C++ l'utilizzo di queste funzioni è semplificato dagli overload dei modelli. Gli overload possono dedurre la lunghezza del buffer automaticamente (eliminando la necessità di specificare un argomento di dimensione) e possono sostituire automaticamente le funzioni precedenti e non sicure con le controparti più recenti e sicure. Per ulteriori informazioni, vedere Overload di modelli sicuri.

La versione di debug di queste funzioni per prima cosa riempiono il buffer con il valore 0xFD. Per disattivare questo comportamento, utilizzare _CrtSetDebugFillThreshold.

Mapping di routine di testo generico

Routine Tchar.h

_UNICODE e _MBCS non definiti

_MBCS definito

_UNICODE definito

_itot_s

_itoa_s

_itoa_s

_itow_s

_i64tot_s

_i64toa_s

_i64toa_s

_i64tow_s

_ui64tot_s

_ui64toa_s

_ui64toa_s

_ui64tow_s

Requisiti

Routine

Intestazione obbligatoria

_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>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità.

Esempio

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

Output

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)

Equivalente .NET Framework

System::Convert::ToString

Vedere anche

Riferimenti

Conversione dei dati

_ltoa, _ltow

_ultoa, _ultow