_itoa_s, _i64toa_s, _ui64toa_s, _itow_s, _i64tow_s, _ui64tow_s
Converte un Integer 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
Numero da convertire.[out] buffer
Riempito con un risultato della conversione.[in] sizeInCharacters
Dimensione del buffer i caratteri a byte singolo o i caratteri di tipo " wide ".[in] radix
Base value; quale deve essere compreso 2-36.
Valore restituito
Zero in caso di esito positivo; un codice di errore in caso di errore.Se una qualsiasi delle condizioni seguenti è applicato, la funzione viene richiamato un gestore non valido di parametro, come descritto in Convalida dei parametri.
condizioni di errore
valore |
buffer |
sizeInCharacters |
base |
Return |
---|---|---|---|---|
qualsiasi |
NULL |
qualsiasi |
qualsiasi |
EINVAL |
qualsiasi |
qualsiasi |
<=0 |
qualsiasi |
EINVAL |
qualsiasi |
qualsiasi |
Lunghezza di <= della stringa di risultato richiesta |
qualsiasi |
EINVAL |
qualsiasi |
qualsiasi |
qualsiasi |
radix < 2 o radix > 36 |
EINVAL |
problemi di sicurezza
Tali funzioni possono generare una violazione di accesso se buffer non indica la memoria valida e non viene NULL, o se la lunghezza del buffer non è sufficientemente lungo di utilizzare la stringa di risultato.
Note
Ad eccezione dei parametri e il valore restituito, _itoa_s le funzioni presentano lo stesso comportamento della corrispondenza versioni meno sicure.
In C++, utilizzando queste funzioni è semplificato dagli overload del modello; gli overload possono dedurre la lunghezza del buffer automaticamente (che elimina la necessità di specificare un argomento di dimensione) e possono sostituire automaticamente le funzioni precedenti e non sicure con le più recenti, controparti sicure.Per ulteriori informazioni, vedere Assicurarsi che gli overload del modello.
Le versioni di debug di queste funzioni innanzitutto soddisfano il buffer del valore 0xFD.Per disabilitare questo comportamento, utilizzare _CrtSetDebugFillThreshold.
Mapping di routine a testo generico
routine di 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 di associazione |
---|---|
_itoa_s |
<definito> |
_i64toa_s |
<definito> |
_ui64toa_s |
<definito> |
_itow_s |
<definito> o <wchar.h> |
_i64tow_s |
<definito> o <wchar.h> |
_ui64tow_s |
<definito> o <wchar.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.
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:: Conversione:: ToString