Sdílet prostřednictvím


_itoa_s, _ltoa_s, , _ultoa_s, _ui64toa_s_i64toa_s, _itow_s_ltow_s_ultow_s, , _i64tow_s_ui64tow_s

Převede celé číslo na řetězec. Tyto funkce jsou verze funkcí s _itow vylepšeními zabezpečení, jak je popsáno v funkcích zabezpečení v CRT._itoa

Syntaxe

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 );

Parametry

value
Číslo, které se má převést.

buffer
Výstupní vyrovnávací paměť, která obsahuje výsledek převodu.

size
Velikost znaků nebo širokých buffer znaků

radix
Radix nebo číselná základna, která se má použít k převodu value, která musí být v rozsahu 2-36.

Vrácená hodnota

Nula v případě úspěchu; kód chyby při selhání. Pokud platí některá z následujících podmínek, funkce vyvolá neplatnou obslužnou rutinu parametru, jak je popsáno v ověření parametru.

Chybové podmínky

hodnota vyrovnávací paměť size základ Zpět
jakékoliv NULL jakékoliv jakékoliv EINVAL
jakékoliv jakékoliv <=0 jakékoliv EINVAL
jakékoliv jakékoliv <= délka požadovaného výsledného řetězce jakékoliv EINVAL
jakékoliv jakékoliv jakékoliv radix< 2 nebo radix> 36 EINVAL

Problémy se zabezpečením

Tyto funkce můžou vygenerovat porušení přístupu, pokud buffer neodkazuje na platnou paměť a není NULL, nebo pokud délka vyrovnávací paměti není dostatečně dlouhá, aby mohl obsahovat výsledný řetězec.

Poznámky

S výjimkou parametrů a návratové hodnoty _itoa_s _itow_s mají rodiny funkcí stejné chování jako odpovídající méně zabezpečené _itoa a _itow verze.

V jazyce C++ je použití těchto funkcí zjednodušeno přetíženími šablon; přetížení mohou automaticky odvodit délku vyrovnávací paměti (eliminuje potřebu zadat argument velikosti) a mohou automaticky nahradit starší, nezabezpečené funkce jejich novějšími zabezpečenými protějšky. Další informace naleznete v tématu Přetížení šablon zabezpečení.

Verze knihovny ladění těchto funkcí nejprve vyplní vyrovnávací paměť 0xFE. Chcete-li toto chování zakázat, použijte _CrtSetDebugFillThreshold.

CRT obsahuje praktická makra pro definování velikosti vyrovnávací paměti potřebné k převodu nejdelší možné hodnoty každého typu celého čísla, včetně ukončovací a znaku null pro několik společných bází. Informace naleznete v tématu Maximální počet převodu maker.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Mapování rutin obecného textu

Tchar.h rutina _UNICODE a _MBCS není definován _MBCS definovaný _UNICODE definovaný
_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

Požadavky

Rutina Požadovaný hlavičkový soubor
_itoa_s, _ltoa_s, _ultoa_s, , _i64toa_s_ui64toa_s <stdlib.h>
_itow_s, _ltow_s, _ultow_s, , _i64tow_s_ui64tow_s <stdlib.h> nebo <wchar.h>

Tyto funkce jsou specifické pro Microsoft. Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

Tato ukázka ukazuje použití několika celočíselné převodní funkce. Makro _countof funguje pouze pro určení velikosti vyrovnávací paměti, pokud je deklarace pole viditelná kompilátoru, a ne pro parametry, které se rozložily na ukazatele.

// 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)

Viz také

Konverze dat
_itoa, _itow funkce