Delen via


_itoa_s, , _ultoa_s, _i64toa_s_ltoa_s, , _ui64toa_s, _itow_s, , _i64tow_s_ultow_s_ltow_s_ui64tow_s

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)

Zie ook

Gegevensconversie
_itoa, _itow functies