_itoa_s
_ultoa_s
, _ltoa_s
, , _i64toa_s
, _ui64toa_s
_itow_s
, _ltow_s
, _ultow_s
, , _i64tow_s
_ui64tow_s
Converte un intero in una stringa. Queste funzioni sono versioni di , funzioni con miglioramenti della _itoa
sicurezza, come descritto in Funzionalità di sicurezza in CRT. _itow
Sintassi
errno_t _itoa_s( int value, char * buffer, size_t size, int radix );
errno_t _ltoa_s( long value, char * buffer, size_t size, int radix );
errno_t _ultoa_s( unsigned long value, char * buffer, size_t size, int radix );
errno_t _i64toa_s( long long value, char *buffer,
size_t size, int radix );
errno_t _ui64toa_s( unsigned long long value, char *buffer,
size_t size, int radix );
errno_t _itow_s( int value, wchar_t *buffer,
size_t size, int radix );
errno_t _ltow_s( long value, wchar_t *buffer,
size_t size, int radix );
errno_t _ultow_s( unsigned long value, wchar_t *buffer,
size_t size, int radix );
errno_t _i64tow_s( long long value, wchar_t *buffer,
size_t size, int radix );
errno_t _ui64tow_s( unsigned long long value, wchar_t *buffer,
size_t size, int radix
);
// These template functions are C++ only:
template <size_t size>
errno_t _itoa_s( int value, char (&buffer)[size], int radix );
template <size_t size>
errno_t _ltoa_s( long value, char (&buffer)[size], int radix );
template <size_t size>
errno_t _ultoa_s( unsigned long value, char (&buffer)[size], int radix );
template <size_t size>
errno_t _itow_s( int value, wchar_t (&buffer)[size], int radix );
template <size_t size>
errno_t _ltow_s( long value, wchar_t (&buffer)[size], int radix );
template <size_t size>
errno_t _ultow_s( unsigned long value, wchar_t (&buffer)[size], int radix );
Parametri
value
Numero da convertire.
buffer
Buffer di output che contiene il risultato della conversione.
size
Dimensioni di buffer
in caratteri o caratteri wide.
radix
Base numerica o radix da usare per convertire value
, che deve essere compreso nell'intervallo da 2 a 36.
Valore restituito
Zero se con esito positivo; un codice di errore in caso di errore. Se si applica una delle condizioni seguenti, la funzione richiama un gestore di parametri non validi, come descritto in Convalida dei parametri.
Condizioni di errore
value | buffer | size | radix | Restituzione |
---|---|---|---|---|
qualsiasi | NULL |
qualsiasi | qualsiasi | EINVAL |
qualsiasi | qualsiasi | <=0 | qualsiasi | EINVAL |
qualsiasi | qualsiasi | <= lunghezza della stringa di risultato richiesta | qualsiasi | EINVAL |
qualsiasi | qualsiasi | qualsiasi | radix < 2 o radix > 36 |
EINVAL |
Problemi di sicurezza
Queste funzioni possono generare una violazione di accesso se buffer
non punta alla memoria valida e non NULL
è o se la lunghezza del buffer non è sufficiente per contenere la stringa di risultato.
Osservazioni:
Ad eccezione dei parametri e del valore restituito, le _itoa_s
famiglie di funzioni e _itow_s
hanno lo stesso comportamento delle corrispondenti versioni e _itow
meno sicure_itoa
.
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 altre informazioni, vedere Proteggere gli overload dei modelli.
Le versioni della libreria di debug di queste funzioni riempiono prima di tutto il buffer con 0xFE. Per disabilitare questo comportamento, usare _CrtSetDebugFillThreshold
.
CRT include macro utili per definire le dimensioni del buffer necessarie per convertire il valore più lungo possibile di ogni tipo integer, incluso il carattere di terminazione null e il carattere di segno, per diverse basi comuni. Per informazioni, vedere Numero massimo di macro di conteggio delle conversioni.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Mapping di routine di testo generico
Tchar.h routine |
_UNICODE e _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_itot_s |
_itoa_s |
_itoa_s |
_itow_s |
_ltot_s |
_ltoa_s |
_ltoa_s |
_ltow_s |
_ultot_s |
_ultoa_s |
_ultoa_s |
_ultow_s |
_i64tot_s |
_i64toa_s |
_i64toa_s |
_i64tow_s |
_ui64tot_s |
_ui64toa_s |
_ui64toa_s |
_ui64tow_s |
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
_itoa_s , _ltoa_s , _ultoa_s , _i64toa_s _ui64toa_s |
<stdlib.h> |
_itow_s , _ltow_s , _ultow_s , _i64tow_s _ui64tow_s |
<stdlib.h> oppure <wchar.h> |
Queste funzioni sono specifiche di Microsoft. Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
In questo esempio viene illustrato l'uso di alcune delle funzioni di conversione integer. La _countof
macro funziona solo per determinare le dimensioni del buffer quando la dichiarazione di matrice è visibile al compilatore e non per i parametri con decadimento ai puntatori.
// crt_itoa_s.c
// Compile by using: cl /W4 crt_itoa_s.c
#include <stdlib.h> // for _itoa_s functions, _countof, count macro
#include <stdio.h> // for printf
#include <string.h> // for strnlen
int main( void )
{
char buffer[_MAX_U64TOSTR_BASE2_COUNT];
int r;
for ( r = 10; r >= 2; --r )
{
_itoa_s( -1, buffer, _countof(buffer), r );
printf( "base %d: %s (%d chars)\n",
r, buffer, strnlen(buffer, _countof(buffer)) );
}
printf( "\n" );
for ( r = 10; r >= 2; --r )
{
_i64toa_s( -1LL, buffer, _countof(buffer), r );
printf( "base %d: %s (%d chars)\n",
r, buffer, strnlen(buffer, _countof(buffer)) );
}
printf( "\n" );
for ( r = 10; r >= 2; --r )
{
_ui64toa_s( 0xffffffffffffffffULL, buffer, _countof(buffer), 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)