Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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)