Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Konverterar ett heltal till en sträng. Dessa funktioner är versioner av _itoafunktionerna , _itow med säkerhetsförbättringar enligt beskrivningen i Säkerhetsfunktioner i CRT.
Syntax
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 );
Parameterar
value
Tal som ska konverteras.
buffer
Utdatabuffert som innehåller resultatet av konverteringen.
size
Storleken på buffer tecken eller breda tecken.
radix
Radixet eller den numeriska bas som ska användas för att konvertera value, som måste ligga i intervallet 2–36.
Returvärde
Noll om det lyckas. en felkod vid fel. Om något av följande villkor gäller anropar funktionen en ogiltig parameterhanterare enligt beskrivningen i Parameterverifiering.
Feltillstånd
| värde | buffert | storlek | Radix | Återvända |
|---|---|---|---|---|
| någon | NULL |
någon | någon | EINVAL |
| någon | någon | <=0 | någon | EINVAL |
| någon | någon | <= längden på den resultatsträng som krävs | någon | EINVAL |
| någon | någon | någon |
radix
< 2 eller radix> 36 |
EINVAL |
Säkerhetsproblem
Dessa funktioner kan generera en åtkomstöverträdelse om buffer inte pekar på giltigt minne och inte NULLär , eller om längden på bufferten inte är tillräckligt lång för att innehålla resultatsträngen.
Anmärkningar
Förutom parametrarna och returvärdet har funktionsfamiljerna _itoa_s och _itow_s samma beteende som motsvarande mindre säkra _itoa och _itow versioner.
I C++ förenklas användningen av dessa funktioner av överbelastningar av mallar; Överlagringarna kan härleda buffertlängden automatiskt (vilket eliminerar behovet av att ange ett storleksargument) och de kan automatiskt ersätta äldre, icke-säkra funktioner med sina nyare, säkra motsvarigheter. För mer information, se Secure template overloads.
Felsökningsbiblioteksversionerna av dessa funktioner fyller först bufferten med 0xFE. Om du vill inaktivera det här beteendet använder du _CrtSetDebugFillThreshold.
CRT innehåller praktiska makron för att definiera storleken på bufferten som krävs för att konvertera det längsta möjliga värdet för varje heltalstyp, inklusive null-avslutaren och teckentecknet, för flera vanliga baser. Mer information finns i Makron för maximalt antal konverteringar.
Som standard är den här funktionens globala tillstånd begränsat till programmet. Information om hur du ändrar det här beteendet finns i Globalt tillstånd i CRT.
Allmän textrutinmappning
Tchar.h rutin |
_UNICODE och _MBCS inte definierat |
_MBCS definierad |
_UNICODE definierad |
|---|---|---|---|
_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 |
Kravspecifikation
| Rutin | Obligatoriskt huvud |
|---|---|
_itoa_s, _ltoa_s, _ultoa_s, , , _i64toa_s_ui64toa_s |
<stdlib.h> |
_itow_s, _ltow_s, _ultow_s, , , _i64tow_s_ui64tow_s |
<stdlib.h> eller <wchar.h> |
Dessa funktioner är Microsoft-specifika. Mer kompatibilitetsinformation finns i Kompatibilitet.
Exempel
Det här exemplet visar användningen av några av heltalskonverteringsfunktionerna. Makrot _countof fungerar bara för att fastställa buffertstorleken när matrisdeklarationen är synlig för kompilatorn och inte för parametrar som har förfallit till pekare.
// 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)