Aracılığıyla paylaş


itoa, , ltoa, , _ltoa, ultoa, _ultoa, , _i64toa, _ui64toa, _ltow_itow, _i64tow_ultow, _itoa_ui64tow

Tamsayıyı dizeye dönüştürür. Bu işlevlerin daha güvenli sürümleri kullanılabilir, bkz _itoa_s. , _itow_s işlevleri.

Sözdizimi

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

Parametreler

value
Dönüştürülecek sayı.

buffer
Dönüştürmenin sonucunu tutan arabellek.

radix
2-36 aralığında olması gereken dönüştürme valueiçin kullanılacak taban.

size
Arabelleğin karakter türünün birimleri cinsinden uzunluğu. Bu parametre C++'taki bağımsız değişkenden buffer çıkarılır.

Dönüş değeri

Bu işlevlerin her biri için bufferbir işaretçi döndürür. Hata döndürme yok.

Açıklamalar

_itoa, _ltoa, _ultoa, _i64toave _ui64toa işlevleri, verilen value bağımsız değişkenin basamaklarını null olarak sonlandırılan bir karakter dizesine dönüştürür ve sonucu (ve için _ui64toa_i64toa _itoa, _ltoa, ve _ultoaiçin 65 karaktere kadar) bufferdepolar. 10'a eşitse ve value negatifseradix, depolanan dizenin ilk karakteri eksi işaretidir (-). _itow, _ltow, , _ultow, _i64towve _ui64tow işlevleri sırasıyla , _ltoa, _ultoa, _i64toave _ui64toa'nin _itoageniş karakterli sürümleridir.

Önemli

Bu işlevler, çok küçük bir arabelleğin sonunu yazabilir. Arabellek taşmalarını önlemek için, dönüştürülen basamakların yanı sıra sondaki null karakteri ve bir işaret karakterini barındıracak kadar büyük olduğundan emin olun buffer . Bu işlevlerin kötüye kullanılması kodunuzda ciddi güvenlik sorunlarına neden olabilir.

Olası güvenlik sorunları nedeniyle bu işlevler varsayılan olarak kullanımdan kaldırma uyarısı C4996'ya neden olur: Bu işlev veya değişken güvenli olmayabilir. Bunun yerine kullanmayı safe_function göz önünde bulundurun. Kullanımdan kaldırmayı devre dışı bırakmak için kullanın _CRT_SECURE_NO_WARNINGS. Kaynak kodunuzu uyarı iletisinin safe_function önerdiğini kullanacak şekilde değiştirmenizi öneririz. Daha güvenli işlevler, belirtilen arabellek boyutundan daha fazla karakter yazmaz. Daha fazla bilgi için bkz_itoa_s. işlevleri_itow_s.

Bu işlevleri kullanımdan kaldırma uyarısı olmadan kullanmak için, herhangi bir CRT üst bilgisi eklemeden önce önişlemci makroyu tanımlayın _CRT_SECURE_NO_WARNINGS . Komutuna /D_CRT_SECURE_NO_WARNINGS derleyici seçeneğini cl ekleyerek tanımlayabilirsiniz. Aksi takdirde, makroyu kaynak dosyalarınızda tanımlayın. Önceden derlenmiş üst bilgiler kullanıyorsanız, önceden derlenmiş üst bilgi ekleme dosyasının pch.h üst kısmındaki makroyu tanımlayın (stdafx.h Visual Studio 2017 ve önceki sürümlerde). Makroyu kaynak kodunuzda tanımlamak için, bu örnekte olduğu gibi herhangi bir CRT üst bilgisi eklemeden önce bir #define yönerge kullanın:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdlib.h>

C++'da bu işlevlerin daha güvenli karşılıklarını çağıran şablon aşırı yüklemeleri vardır. Daha fazla bilgi için bkz . Güvenli şablon aşırı yüklemeleri.

Varsayılan olarak, bu işlevlerin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

POSIX adı itoa, ltoave ultoa , ve _ultoa işlevleri için _itoa_ltoadiğer adlar olarak bulunur. POSIX adları, ISO C'nin uygulamaya özgü genel işlev adı kurallarına uymadığından kullanım dışıdır. Varsayılan olarak, bu işlevler kullanımdan kaldırma uyarısı C4996'ya neden olur: Bu öğenin POSIX adı kullanım dışıdır. Bunun yerine ISO C ve C++ uyumlu adını kullanın: new_name. Kaynak kodunuzu, bu işlevlerin _itoa_s, , _ltoa_sveya _ultoa_sdaha güvenli sürümlerini kullanacak şekilde değiştirmenizi öneririz. Daha fazla bilgi için bkz_itoa_s. işlevleri_itow_s.

Kaynak kodu taşınabilirliği için POSIX adlarını kodunuzda tutmayı tercih edebilirsiniz. Bu işlevleri kullanımdan kaldırma uyarısı olmadan kullanmak için, CRT üst bilgilerini eklemeden önce hem hem de _CRT_NONSTDC_NO_WARNINGS _CRT_SECURE_NO_WARNINGS önişlemci makrolarını tanımlayın. komutuna /D_CRT_SECURE_NO_WARNINGS ve /D_CRT_NONSTDC_NO_WARNINGS derleyici seçeneklerini cl ekleyerek bunları tanımlayabilirsiniz. Aksi takdirde, kaynak dosyalarınızdaki makroları tanımlayın. Önceden derlenmiş üst bilgiler kullanıyorsanız, önceden derlenmiş üst bilgi ekleme dosyasının üst kısmındaki makroları tanımlayın. Kaynak kodunuzda makroları tanımlamak için, bu örnekte olduğu gibi herhangi bir CRT üst bilgisi eklemeden önce yönergeleri kullanın #define :

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

En fazla dönüştürme sayısı makroları

Dönüştürmeler için güvenli arabellekler oluşturmanıza yardımcı olması için CRT bazı kullanışlı makrolar içerir. Bu makrolar, birkaç ortak taban için null sonlandırıcı ve işaret karakteri de dahil olmak üzere her tamsayı türünün mümkün olan en uzun değerini dönüştürmek için gereken arabellek boyutunu tanımlar. Dönüştürme arabelleğinizin tarafından radixbelirtilen tabanda herhangi bir dönüştürme alacak kadar büyük olduğundan emin olmak için, arabelleği ayırırken bu tanımlı makrolardan birini kullanın. Makrolar, integral türlerini dizelere dönüştürdüğünüzde arabellek taşması hatalarını önlemenize yardımcı olur. Bu makrolar, kaynağınıza stdlib.h veya wchar.h eklediğinizde tanımlanır.

Bu makrolardan birini dize dönüştürme işlevinde kullanmak için, uygun karakter türünde dönüştürme arabelleğinizi bildirin ve arabellek boyutu olarak tamsayı türü ve taban için makro değerini kullanın. Bu tabloda, listelenen temeller için her işlev için uygun makrolar listelenir:

İşlevler kök Makrolar
_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

Bu örnekte, 2 tabanında bir arabelleğe sahip olacak kadar büyük bir arabellek tanımlamak için dönüştürme unsigned long long sayısı makrosunda kullanılır:

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

Genel metin yordamı eşlemeleri

Tchar.h olağan _UNICODE ve _MBCS tanımlanmadı _MBCS tanımlanan _UNICODE tanımlanan
_itot _itoa _itoa _itow
_ltot _ltoa _ltoa _ltow
_ultot _ultoa _ultoa _ultow
_i64tot _i64toa _i64toa _i64tow
_ui64tot _ui64toa _ui64toa _ui64tow

Gereksinimler

Yordam Gerekli başlık
itoa, ltoa, ultoa <stdlib.h>
_itoa, _ltoa, _ultoa, _i64toa, , _ui64toa <stdlib.h>
_itow, _ltow, _ultow, _i64tow, , _ui64tow <stdlib.h> veya <wchar.h>

Bu işlevler ve makrolar Microsoft'a özeldir. Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Örnek

Bu örnek, bazı tamsayı dönüştürme işlevlerinin kullanımını gösterir. C4996 uyarısını _CRT_SECURE_NO_WARNINGS susturmak için makronun kullanıldığına dikkat edin.

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

Ayrıca bkz.

Veri dönüştürme
_itoa_s, _itow_s işlevler