itoa、_itoa、ltoa、_ltoa、ultoa、_ultoa、_i64toa、_ui64toa、_itow、_ltow、_ultow、_i64tow、_ui64towitoa, _itoa, ltoa, _ltoa, ultoa, _ultoa, _i64toa, _ui64toa, _itow, _ltow, _ultow, _i64tow, _ui64tow

整数を文字列に変換します。Converts an integer to a string. これらの関数より安全なバージョンは使用できません。参照してください_itoa_s、_itow_s 関数します。More secure versions of these functions are available; see _itoa_s, _itow_s functions.

構文Syntax

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

パラメーターParameters

valuevalue
変換される数値。Number to be converted.

バッファーbuffer
変換の結果を保持するバッファー。Buffer that holds the result of the conversion.

radixradix
変換のために使用する基本2 ~ 36 の範囲で指定する必要があります。The base to use for the conversion of value, which must be in the range 2-36.

sizesize
文字型の単位のバッファーの長さ。Length of the buffer in units of the character type. このパラメーターはから推論、バッファー C++ での引数。This parameter is inferred from the buffer argument in C++.

戻り値Return Value

これらの関数へのポインターを返しますバッファーします。Each of these functions returns a pointer to buffer. エラーの戻り値はありません。There is no error return.

RemarksRemarks

_Itoa_ltoa_ultoa_i64toa、および _ui64toaの桁を変換する関数特定null で終わる文字列と、結果のストアへの引数 (最大 33 文字 _itoa_ltoa、および _ultoa、65 _i64toa_ui64toa) でバッファーします。The _itoa, _ltoa, _ultoa, _i64toa, and _ui64toa functions convert the digits of the given value argument to a null-terminated character string and store the result (up to 33 characters for _itoa, _ltoa, and _ultoa, and 65 for _i64toa and _ui64toa) in buffer. 場合基数10 に等しいとが負の場合、格納された文字列の最初の文字は負符号 (-)。If radix equals 10 and value is negative, the first character of the stored string is the minus sign (-). _Itow_ltow_ultow_i64tow、および _ui64tow関数は、ワイド文字バージョンの _itoa_ltoa_ultoa_i64toa、および _ui64toa、それぞれします。The _itow, _ltow, _ultow, _i64tow, and _ui64tow functions are wide-character versions of _itoa, _ltoa, _ultoa, _i64toa, and _ui64toa, respectively.

重要

これらの関数は、小さすぎてバッファーの末尾に記述できます。These functions can write past the end of a buffer that is too small. バッファー オーバーランを回避することを確認しますバッファー変換された数字および末尾の null 文字と記号の文字を保持するのに十分な大きさです。To prevent buffer overruns, ensure that buffer is large enough to hold the converted digits plus the trailing null-character and a sign character. これらの関数の誤用重大なセキュリティの問題が原因で、コード。Misuse of these functions can cause serious security issues in your code.

これらの関数が非推奨の警告を発生するセキュリティ問題については、既定では、その可能性があるのためC4996:この関数または変数が安全なない可能性があります。使用を検討して safe_function 代わりにします。非推奨を無効にするには、_CRT_SECURE_NO_WARNINGS を使用します。Because of their potential for security issues, by default, these functions cause deprecation warning C4996: This function or variable may be unsafe. Consider using safe_function instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. 使用するソース コードを変更することをお勧めします。、 safe_function警告メッセージをお勧めします。We recommend you change your source code to use the safe_function suggested by the warning message. 安全な関数には、指定されたバッファー サイズより多くの文字は書き込みません。The more secure functions do not write more characters than the specified buffer size. 詳細については、次を参照してください。 _itoa_s、_itow_s 関数します。For more information, see _itoa_s, _itow_s functions.

非推奨の警告なくこれらの関数を使用する定義、 _CRT_SECURE_NO_WARNINGS CRT ヘッダーをインクルードする前にプリプロセッサ マクロ。To use these functions without the deprecation warning, define the _CRT_SECURE_NO_WARNINGS preprocessor macro before including any CRT headers. これを行う開発者コマンド プロンプトでコマンド ラインで追加することで、 /D_CRT_SECURE_NO_WARNINGSコンパイラ オプションをclコマンド。You can do this on the command line in a developer command prompt by adding the /D_CRT_SECURE_NO_WARNINGS compiler option to the cl command. それ以外の場合、ソース ファイルで、マクロを定義します。Otherwise, define the macro in your source files. プリコンパイル済みヘッダーを使用する場合は、プリコンパイル済みヘッダーの上部にあるマクロを定義します。 通常 stdafx.h ファイルを含めるようにします。If you use precompiled headers, define the macro at the top of the precompiled header include file, typically stdafx.h. ソース コードでマクロを定義するには、使用、 #defineディレクティブがこの例のように、すべての CRT ヘッダーをインクルードする前に。To define the macro in your source code, use a #define directive before you include any CRT header, as in this example:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdlib.h>

C++ では、これらの関数はより安全な対応を呼び出すテンプレートのオーバー ロードがあります。In C++, these functions have template overloads that invoke their safer counterparts. 詳細については、「 Secure Template Overloads」を参照してください。For more information, see Secure Template Overloads.

Posix 名itoaltoa、およびultoaのエイリアスとして存在、 _itoa_ltoa_ultoa関数。The Posix names itoa, ltoa, and ultoa exist as aliases for the _itoa, _ltoa, and _ultoa functions. Posix 名は、ISO c ドライブの実装に固有の関数の名前付け規則に従っていないため、非推奨します。既定では、これらの関数は非推奨の警告を発生C4996:このアイテムの POSIX 名が非推奨とされます。代わりに、ISO C を使用し、C++に準拠する名前: new_nameします。The Posix names are deprecated because they do not follow the implementation-specific function name conventions of ISO C. By default, these functions cause deprecation warning C4996: The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: new_name. これらの関数のより安全なバージョンを使用するソース コードを変更することをお勧めします。 _itoa_s_ltoa_s、または _ultoa_sします。We recommend you change your source code to use the safer versions of these functions, _itoa_s, _ltoa_s, or _ultoa_s. 詳細については、次を参照してください。 _itoa_s、_itow_s 関数します。For more information, see _itoa_s, _itow_s functions.

ソース コードの移植性のため、コード内の Posix 名を保持することもできます。For source code portability, you may prefer to retain the Posix names in your code. 非推奨の警告なくこれらの関数を使用するには、両方を定義、 _CRT_NONSTDC_NO_WARNINGS_CRT_SECURE_NO_WARNINGS CRT ヘッダーをインクルードする前にプリプロセッサ マクロ。To use these functions without the deprecation warning, define both the _CRT_NONSTDC_NO_WARNINGS and _CRT_SECURE_NO_WARNINGS preprocessor macros before including any CRT headers. これを行う開発者コマンド プロンプトでコマンド ラインで追加することで、 /D_CRT_SECURE_NO_WARNINGS/D_CRT_NONSTDC_NO_WARNINGSコンパイラ オプションをclコマンド。You can do this on the command line in a developer command prompt by adding the /D_CRT_SECURE_NO_WARNINGS and /D_CRT_NONSTDC_NO_WARNINGS compiler options to the cl command. それ以外の場合、ソース ファイルで、マクロを定義します。Otherwise, define the macros in your source files. プリコンパイル済みヘッダーを使用する場合は、定義プリコンパイル済みヘッダーの上部にあるマクロが通常 stdafx.h ファイルを含めるようにします。If you use precompiled headers, define the macros at the top of the precompiled header include file, typically stdafx.h. ソース コードでマクロを定義するには、使用 #defineディレクティブがこの例のように、すべての CRT ヘッダーをインクルードする前に。To define the macros in your source code, use #define directives before you include any CRT header, as in this example:

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

最大変換数マクロMaximum conversion count macros

変換をセキュリティで保護されたバッファーを作成するために、CRT には、いくつかの便利なマクロが含まれています。To help you create secure buffers for conversions, the CRT includes some convenient macros. これらは、null 終端文字を含む、各整数型の最も長い可能な値に変換するために必要なバッファーのサイズを定義し、いくつかの一般的なベースの文字を署名します。These define the size of the buffer required to convert the longest possible value of each integer type, including the null terminator and sign character, for several common bases. 変換バッファーがで指定した基数での変換を受信するのに十分な大きさであることを確認する基数、これらのいずれかは、バッファーを割り当てるときにマクロを定義します。To ensure that your conversion buffer is large enough to receive any conversion in the base specified by radix, use one of these defined macros when you allocate the buffer. これは、整数型を文字列に変換すると、バッファー オーバーラン エラーを防ぐのに役立ちます。This helps to prevent buffer overrun errors when you convert integral types to strings. Stdlib.h または wchar.h のいずれかを含める、ソースの場合、これらのマクロが定義されます。These macros are defined when you include either stdlib.h or wchar.h in your source.

これらのマクロのいずれかを使用して、文字列変換関数に適切な文字型の変換バッファーを宣言し、マクロの値を整数型とベースのバッファーのディメンションとして使用します。To use one of these macros in a string conversion function, declare your conversion buffer of the appropriate character type and use the macro value for the integer type and base as the buffer dimension. この表の各関数の一覧表示されている基本クラスの適切なマクロを一覧します。This table lists the macros that are appropriate for each function for the listed bases:

関数Functions radixradix [マクロ]Macros
_itoa_itow_itoa, _itow 1616
1010
98
22
_MAX_ITOSTR_BASE16_COUNT_MAX_ITOSTR_BASE16_COUNT
_MAX_ITOSTR_BASE10_COUNT_MAX_ITOSTR_BASE10_COUNT
_MAX_ITOSTR_BASE8_COUNT_MAX_ITOSTR_BASE8_COUNT
_MAX_ITOSTR_BASE2_COUNT_MAX_ITOSTR_BASE2_COUNT
_ltoa_ltow_ltoa, _ltow 1616
1010
98
22
_MAX_LTOSTR_BASE16_COUNT_MAX_LTOSTR_BASE16_COUNT
_MAX_LTOSTR_BASE10_COUNT_MAX_LTOSTR_BASE10_COUNT
_MAX_LTOSTR_BASE8_COUNT_MAX_LTOSTR_BASE8_COUNT
_MAX_LTOSTR_BASE2_COUNT_MAX_LTOSTR_BASE2_COUNT
_ultoa_ultow_ultoa, _ultow 1616
1010
98
22
_MAX_ULTOSTR_BASE16_COUNT_MAX_ULTOSTR_BASE16_COUNT
_MAX_ULTOSTR_BASE10_COUNT_MAX_ULTOSTR_BASE10_COUNT
_MAX_ULTOSTR_BASE8_COUNT_MAX_ULTOSTR_BASE8_COUNT
_MAX_ULTOSTR_BASE2_COUNT_MAX_ULTOSTR_BASE2_COUNT
_i64toa_i64tow_i64toa, _i64tow 1616
1010
98
22
_MAX_I64TOSTR_BASE16_COUNT_MAX_I64TOSTR_BASE16_COUNT
_MAX_I64TOSTR_BASE10_COUNT_MAX_I64TOSTR_BASE10_COUNT
_MAX_I64TOSTR_BASE8_COUNT_MAX_I64TOSTR_BASE8_COUNT
_MAX_I64TOSTR_BASE2_COUNT_MAX_I64TOSTR_BASE2_COUNT
_ui64toa_ui64tow_ui64toa, _ui64tow 1616
1010
98
22
_MAX_U64TOSTR_BASE16_COUNT_MAX_U64TOSTR_BASE16_COUNT
_MAX_U64TOSTR_BASE10_COUNT_MAX_U64TOSTR_BASE10_COUNT
_MAX_U64TOSTR_BASE8_COUNT_MAX_U64TOSTR_BASE8_COUNT
_MAX_U64TOSTR_BASE2_COUNT_MAX_U64TOSTR_BASE2_COUNT

この例では、変換数マクロを使用して、定義を格納するのに十分な大きさのバッファー、 unsigned long long 型基本 2。This example uses a conversion count macro to define a buffer large enough to contain an unsigned long long in base 2:

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

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

Tchar.h のルーチンTchar.h routine _UNICODE および _MBCS が未定義の場合_UNICODE and _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_itot_itot _itoa_itoa _itoa_itoa _itow_itow
_ltot_ltot _ltoa_ltoa _ltoa_ltoa _ltow_ltow
_ultot_ultot _ultoa_ultoa _ultoa_ultoa _ultow_ultow
_i64tot_i64tot _i64toa_i64toa _i64toa_i64toa _i64tow_i64tow
_ui64tot_ui64tot _ui64toa_ui64toa _ui64toa_ui64toa _ui64tow_ui64tow

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
itoaltoaultoaitoa, ltoa, ultoa <stdlib.h><stdlib.h>
_itoa_ltoa_ultoa_i64toa_ui64toa_itoa, _ltoa, _ultoa, _i64toa, _ui64toa <stdlib.h><stdlib.h>
_itow_ltow_ultow_i64tow_ui64tow_itow, _ltow, _ultow, _i64tow, _ui64tow <stdlib.h> または <wchar.h><stdlib.h> or <wchar.h>

これらの関数とマクロは、Microsoft 固有です。These functions and macros are Microsoft-specific. 互換性の詳細については、「 互換性」を参照してください。For more compatibility information, see Compatibility.

Example

このサンプルでは、いくつかの整数の変換関数の使用を示します。This sample demonstrates the use of some of the integer conversion functions. 使用に注意してください、 _CRT_SECURE_NO_WARNINGSマクロ警告 C4996 サイレント状態にします。Note the use of the _CRT_SECURE_NO_WARNINGS macro to silence warning C4996.

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

関連項目See also

データ変換Data Conversion
_itoa_s、_itow_s 関数_itoa_s, _itow_s functions