Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Converteert een geheel getal naar een tekenreeks. Deze functies zijn versies van de _itoa, _itow functies met beveiligingsverbeteringen, zoals beschreven in beveiligingsfuncties in de CRT.
Syntaxis
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 );
Parameterwaarden
value
Getal dat moet worden geconverteerd.
buffer
Uitvoerbuffer die het resultaat van de conversie bevat.
size
Grootte van buffer in tekens of brede tekens.
radix
De radix of numerieke basis die moet worden gebruikt om te converteren value, die zich in het bereik 2-36 moet bevindt.
Retourwaarde
Nul indien geslaagd; een foutcode bij fout. Als een van de volgende voorwaarden van toepassing is, roept de functie een ongeldige parameterhandler aan, zoals beschreven in parametervalidatie.
Foutvoorwaarden
| waarde | buffer | grootte | Radix | Retourneren |
|---|---|---|---|---|
| enige | NULL |
enige | enige | EINVAL |
| enige | enige | <=0 | enige | EINVAL |
| enige | enige | <= lengte van de resultaattekenreeks die is vereist | enige | EINVAL |
| enige | enige | enige |
radix
< 2 of radix> 36 |
EINVAL |
Beveiligingsproblemen
Deze functies kunnen een toegangsschending genereren als buffer deze niet verwijst naar geldig geheugen en niet NULL, of als de lengte van de buffer niet lang genoeg is om de resultaattekenreeks vast te houden.
Opmerkingen
Met uitzondering van de parameters en retourwaarde hebben de _itoa_s en _itow_s functiefamilies hetzelfde gedrag als de bijbehorende minder veilige _itoa en _itow versies.
In C++ wordt het gebruik van deze functies vereenvoudigd door overbelasting van sjabloon; De overbelasting kan automatisch de bufferlengte afleiden (waardoor het niet meer nodig is om een grootteargument op te geven) en ze kunnen oudere, niet-beveiligde functies automatisch vervangen door hun nieuwere, veilige tegenhangers. Zie Overbelasting van beveiligde sjablonen voor meer informatie.
De foutopsporingsbibliotheekversies van deze functies vullen eerst de buffer met 0xFE. Gebruik _CrtSetDebugFillThresholdom dit gedrag uit te schakelen.
De CRT bevat handige macro's om de grootte van de buffer te definiƫren die nodig is om de langst mogelijke waarde van elk geheel getaltype, inclusief het null-eindteken en teken, te converteren voor verschillende algemene bases. Zie Maximumaantal macro's voor conversies voor meer informatie.
De globale status van deze functie is standaard gericht op de toepassing. Als u dit gedrag wilt wijzigen, raadpleegt u de globale status in de CRT.
Algemene routinetoewijzingen voor tekst
Tchar.h routine |
_UNICODE en _MBCS niet gedefinieerd |
_MBCS gedefinieerd |
_UNICODE gedefinieerd |
|---|---|---|---|
_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 |
Behoeften
| Routine | Vereiste header |
|---|---|
_itoa_s, _ltoa_s, _ultoa_s, _i64toa_s, _ui64toa_s |
<stdlib.h> |
_itow_s, _ltow_s, _ultow_s, _i64tow_s, _ui64tow_s |
<stdlib.h> of <wchar.h> |
Deze functies zijn specifiek voor Microsoft. Zie Compatibiliteit voor meer compatibiliteitsinformatie.
Voorbeeld
In dit voorbeeld ziet u het gebruik van enkele conversiefuncties voor gehele getallen. De _countof macro werkt alleen om de buffergrootte te bepalen wanneer de matrixdeclaratie zichtbaar is voor de compiler en niet voor parameters die zijn vervallen tot aanwijzers.
// 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)