Megosztás a következőn keresztül:


itoa, _itoa, ltoa, _ltoa, ultoa_ultoa, _i64toa, _ui64toa, _itow, _ltow, _ultow, , , _i64tow_ui64tow

Egész számot sztringgé alakít át. A függvények biztonságosabb verziói érhetők el, lásd_itoa_s: függvények_itow_s.

Szemantika

char * _itoa( int value, char *buffer, int radix );
char * _ltoa( long value, char *buffer, int radix );
char * _ultoa( unsigned long value, char *buffer, int radix );
char * _i64toa( long long value, char *buffer, int radix );
char * _ui64toa( unsigned long long value, char *buffer, int radix );

wchar_t * _itow( int value, wchar_t *buffer, int radix );
wchar_t * _ltow( long value, wchar_t *buffer, int radix );
wchar_t * _ultow( unsigned long value, wchar_t *buffer, int radix );
wchar_t * _i64tow( long long value, wchar_t *buffer, int radix );
wchar_t * _ui64tow( unsigned long long value, wchar_t *buffer, int radix );

// These POSIX versions of the functions have deprecated names:
char * itoa( int value, char *buffer, int radix );
char * ltoa( long value, char *buffer, int radix );
char * ultoa( unsigned long value, char *buffer, int radix );

// The following template functions are C++ only:
template <size_t size>
char *_itoa( int value, char (&buffer)[size], int radix );

template <size_t size>
char *_itoa( long value, char (&buffer)[size], int radix );

template <size_t size>
char *_itoa( unsigned long value, char (&buffer)[size], int radix );

template <size_t size>
char *_i64toa( long long value, char (&buffer)[size], int radix );

template <size_t size>
char * _ui64toa( unsigned long long value, char (&buffer)[size], int radix );

template <size_t size>
wchar_t * _itow( int value, wchar_t (&buffer)[size], int radix );

template <size_t size>
wchar_t * _ltow( long value, wchar_t (&buffer)[size], int radix );

template <size_t size>
wchar_t * _ultow( unsigned long value, wchar_t (&buffer)[size], int radix );

template <size_t size>
wchar_t * _i64tow( long long value, wchar_t (&buffer)[size], int radix );

template <size_t size>
wchar_t * _ui64tow( unsigned long long value, wchar_t (&buffer)[size],
   int radix );

Paraméterek

value
Konvertálandó szám.

buffer
Az átalakítás eredményét tartalmazó puffer.

radix
Az átalakítás valuealapjának a 2–36 tartományba kell esnie.

size
A puffer hossza a karaktertípus egységeiben. Ez a paraméter a buffer C++ argumentumból származik.

Visszaadott érték

Mindegyik függvény egy mutatót ad vissza.buffer A hiba nem jelenik meg.

Megjegyzések

A _itoa, _ltoa, _ultoa, _i64toaés _ui64toa függvények az adott value argumentum számjegyeit null értékű karaktersztringgé alakítják át, és az eredményt (legfeljebb 33 karaktert_itoa, az , _ltoa_ultoaés a 65 karaktert _i64toa_ui64toa) tárolják.buffer Ha radix értéke 10, és value negatív, a tárolt sztring első karaktere a mínuszjel (-). A _itow, _ltow, _ultow, _i64towés _ui64tow függvények a , _itoa, _ltoa_ultoa, és _i64toa, széles karakterű verziói_ui64toa.

Fontos

Ezek a függvények túl kicsi pufferek végén írhatnak. A puffertúlcsordulások elkerülése érdekében győződjön meg arról, hogy elég nagy ahhoz, hogy buffer az átalakított számjegyeket, valamint a záró null karaktert és egy jelkaraktert tartsa. Ezeknek a függvényeknek a helytelen használata komoly biztonsági problémákat okozhat a kódban.

A biztonsági problémák miatt alapértelmezés szerint ezek a függvények elavultságra figyelmeztető C4996 figyelmeztetést okoznak: Ez a függvény vagy változó nem biztonságos. Fontolja meg a használatát safe_function . Az elavulás letiltásához használja a következőt _CRT_SECURE_NO_WARNINGS: . Javasoljuk, hogy módosítsa a forráskódot úgy, hogy a safe_function figyelmeztető üzenet által javasolt legyen. A biztonságosabb függvények nem írnak több karaktert, mint a megadott pufferméret. További információ: _itoa_s, _itow_s függvények.

Ha elavulásra vonatkozó figyelmeztetés nélkül szeretné használni ezeket a függvényeket, a CRT-fejlécek felvétele előtt adja meg az _CRT_SECURE_NO_WARNINGS előfeldolgozó makrót. Ezt úgy határozhatja meg, hogy hozzáadja a /D_CRT_SECURE_NO_WARNINGS fordítót a cl parancshoz. Ellenkező esetben definiálja a makrót a forrásfájlokban. Ha előre összeállított fejléceket használ, adja meg a makrót az előre összeállított fejlécek közé tartozó fájl tetején ( pch.hstdafx.h a Visual Studio 2017-ben és korábbi verzióiban). Ha meg szeretné határozni a makrót a forráskódban, használjon egy #define direktívát, mielőtt bármilyen CRT-fejlécet felvennénk, ahogyan az ebben a példában látható:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdlib.h>

A C++-ban ezek a függvények sablontúlterheltségekkel rendelkeznek, amelyek meghívják biztonságosabb társaikat. További információ: A sablon túlterhelésének biztonságossá tételéről.

Alapértelmezés szerint ezek a függvények globális állapota hatóköre az alkalmazásra terjed ki. Ennek a viselkedésnek a módosításához tekintse meg globális állapotot a CRT.

A POSIX-nevek itoa, ltoaés ultoa a , _itoaés _ltoa függvények aliasaként léteznek_ultoa. A POSIX-nevek elavultak, mert nem követik az ISO C implementációspecifikus globális függvénynév-konvencióit. Alapértelmezés szerint ezek a függvények elavultságra figyelmeztető C4996 figyelmeztetést okoznak: Az elem POSIX-neve elavult. Ehelyett használja az ISO C és C++ szabványnak megfelelő nevet:new_name Javasoljuk, hogy módosítsa a forráskódot a függvények _itoa_s_ltoa_sbiztonságosabb verzióinak használatára._ultoa_s További információ: _itoa_s, _itow_s függvények.

A forráskód hordozhatósága érdekében érdemes lehet megőrizni a POSIX-neveket a kódban. Ha az elavulásra vonatkozó figyelmeztetés nélkül szeretné használni ezeket a függvényeket, a CRT-fejlécek felvétele előtt adja meg az _CRT_NONSTDC_NO_WARNINGS előfeldolgozó makrókat és _CRT_SECURE_NO_WARNINGS az előfeldolgozó makrókat is. Ezeket úgy határozhatja meg, hogy hozzáadja a parancshoz a fordító és /D_CRT_SECURE_NO_WARNINGS a /D_CRT_NONSTDC_NO_WARNINGScl fordító beállításait. Ellenkező esetben határozza meg a forrásfájlokban lévő makrókat. Ha előre összeállított fejléceket használ, adja meg az előre összeállított fejlécek közé tartozó fájl tetején lévő makrókat. A forráskódban lévő makrók meghatározásához használjon #define irányelveket a CRT-fejlécek hozzáadása előtt, ahogyan az ebben a példában látható:

#define _CRT_NONSTDC_NO_WARNINGS 1
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdlib.h>

A konvertálási makrók maximális száma

A konvertálásokhoz szükséges biztonságos pufferek létrehozásához a CRT tartalmaz néhány kényelmes makrót. Ezek a makrók határozzák meg a puffer méretét, amely az egyes egész számtípusok lehető leghosszabb lehetséges értékének konvertálásához szükséges, beleértve a null terminátort és a jel karaktert is, több közös alap esetében. Annak érdekében, hogy a konvertálási puffer elég nagy legyen ahhoz, hogy bármilyen átalakítást megkapjon a megadott radixalapban, használja az egyik ilyen definiált makrót a puffer lefoglalásakor. A makrók segítenek megelőzni a puffertúllépési hibákat az integráltípusok sztringekké alakításakor. Ezek a makrók akkor lesznek definiálva, ha az stdlib.h vagy a wchar.h értéket is belefoglalja a forrásba.

Ha egy sztringkonvertálási függvényben ezen makrók egyikét szeretné használni, deklarálja a megfelelő karaktertípusú konverziós puffert, és pufferdimenzióként használja az egész szám és az alap makróértékét. Ez a táblázat felsorolja azokat a makrókat, amelyek megfelelnek a felsorolt alapok egyes függvényeinek:

Funkciók Radix Makrók
_itoa, _itow 16
10
8
2
_MAX_ITOSTR_BASE16_COUNT
_MAX_ITOSTR_BASE10_COUNT
_MAX_ITOSTR_BASE8_COUNT
_MAX_ITOSTR_BASE2_COUNT
_ltoa, _ltow 16
10
8
2
_MAX_LTOSTR_BASE16_COUNT
_MAX_LTOSTR_BASE10_COUNT
_MAX_LTOSTR_BASE8_COUNT
_MAX_LTOSTR_BASE2_COUNT
_ultoa, _ultow 16
10
8
2
_MAX_ULTOSTR_BASE16_COUNT
_MAX_ULTOSTR_BASE10_COUNT
_MAX_ULTOSTR_BASE8_COUNT
_MAX_ULTOSTR_BASE2_COUNT
_i64toa, _i64tow 16
10
8
2
_MAX_I64TOSTR_BASE16_COUNT
_MAX_I64TOSTR_BASE10_COUNT
_MAX_I64TOSTR_BASE8_COUNT
_MAX_I64TOSTR_BASE2_COUNT
_ui64toa, _ui64tow 16
10
8
2
_MAX_U64TOSTR_BASE16_COUNT
_MAX_U64TOSTR_BASE10_COUNT
_MAX_U64TOSTR_BASE8_COUNT
_MAX_U64TOSTR_BASE2_COUNT

Ez a példa egy konverziószám-makrót használ egy olyan puffer definiálásához, amely elég nagy ahhoz, hogy a 2. alapban tartalmazzon unsigned long long :

#include <wchar.h>
#include <iostream>
int main()
{
    wchar_t buffer[_MAX_U64TOSTR_BASE2_COUNT];
    std::wcout << _ui64tow(0xFFFFFFFFFFFFFFFFull, buffer, 2) << std::endl;
}

Általános szöveges rutinleképezések

Tchar.h rutin _UNICODE és _MBCS nincs definiálva _MBCS Meghatározott _UNICODE Meghatározott
_itot _itoa _itoa _itow
_ltot _ltoa _ltoa _ltow
_ultot _ultoa _ultoa _ultow
_i64tot _i64toa _i64toa _i64tow
_ui64tot _ui64toa _ui64toa _ui64tow

Követelmények

Rutin Kötelező fejléc
\, \, \ <stdlib.h>
_itoa, _ltoa, _ultoa, _i64toa_ui64toa <stdlib.h>
_itow, _ltow, _ultow, _i64tow_ui64tow <stdlib.h> vagy <wchar.h>

Ezek a függvények és makrók Microsoft-specifikusak. További kompatibilitási információkért lásd: Kompatibilitás.

példa

Ez a minta az egész szám konverziós függvényeinek használatát mutatja be. Figyelje meg, hogy a makró használatával elnémíthatja a _CRT_SECURE_NO_WARNINGS C4996 figyelmeztetést.

// crt_itoa.c
// Compile by using: cl /W4 crt_itoa.c
// This program makes use of the _itoa functions
// in various examples.

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>      // for printf
#include <string.h>     // for strnlen
#include <stdlib.h>     // for _countof, _itoa fns, _MAX_COUNT macros

int main(void)
{
    char buffer[_MAX_U64TOSTR_BASE2_COUNT];
    int r;

    for (r = 10; r >= 2; --r)
    {
        _itoa(-1, buffer, r);
        printf("base %d: %s (%d chars)\n", r, buffer,
            strnlen(buffer, _countof(buffer)));
    }
    printf("\n");

    for (r = 10; r >= 2; --r)
    {
        _i64toa(-1LL, buffer, r);
        printf("base %d: %s (%d chars)\n", r, buffer,
            strnlen(buffer, _countof(buffer)));
    }
    printf("\n");

    for (r = 10; r >= 2; --r)
    {
        _ui64toa(0xffffffffffffffffULL, 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)

Lásd még

Adatkonvertálás
_itoa_s, _itow_s függvények