_itoa_s、_ltoa_s、_ultoa_s、_i64toa_s、_ui64toa_s、_itow_s、_ltow_s、_ultow_s、_i64tow_s、_ui64tow_s_itoa_s, _ltoa_s, _ultoa_s, _i64toa_s, _ui64toa_s, _itow_s, _ltow_s, _ultow_s, _i64tow_s, _ui64tow_s

整数を文字列に変換します。Converts an integer to a string. これらはのバージョン、 _itoa、_itow 関数」の説明に従ってセキュリティが強化されたCRT のセキュリティ機能します。These are versions of the _itoa, _itow functions with security enhancements as described in Security Features in the CRT.

構文Syntax

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

パラメーターParameters

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

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

sizesize
サイズバッファー文字またはワイド文字。Size of buffer in characters or wide characters.

radixradix
基数またはを使用して変換する数値の基数2 ~ 36 の範囲で指定する必要があります。The radix or numeric base to use to convert value, which must be in the range 2-36.

戻り値Return value

正常終了した場合は 0 を返します。失敗した場合はエラー コードを返します。Zero if successful; an error code on failure. 次のいずれかの条件が適用される場合は、「パラメーターの検証」で説明されているように、関数によって無効なパラメーター ハンドラーが呼び出されます。If any of the following conditions applies, the function invokes an invalid parameter handler, as described in Parameter Validation.

エラー条件Error conditions

value bufferbuffer sizesize radixradix ReturnReturn
任意any NULLNULL 任意any 任意any EINVALEINVAL
任意any 任意any <=0<=0 任意any EINVALEINVAL
任意any 任意any <= 結果の文字列の長さが必要<= length of the result string required 任意any EINVALEINVAL
任意any 任意any 任意any 基数< 2 または基数> 36radix < 2 or radix > 36 EINVALEINVAL

セキュリティの問題Security issues

場合、これらの関数は、アクセス違反を生成できるバッファーが有効なメモリを指していないとがNULL、またはバッファーの長さがない場合、結果の文字列を保持するのに十分です。These functions can generate an access violation if buffer does not point to valid memory and is not NULL, or if the length of the buffer is not long enough to hold the result string.

RemarksRemarks

パラメーターと戻り値を除く、 _itoa_s_itow_s関数ファミリは、対応する安全性が低いと同じ動作をある _itoa_itowバージョン。Except for the parameters and return value, the _itoa_s and _itow_s function families have the same behavior as the corresponding less secure _itoa and _itow versions.

C++ では、これらの関数の使用はテンプレートのオーバーロードによって簡素化されます。オーバーロードでは、バッファー長を自動的に推論できる (サイズの引数を指定する必要がなくなる) だけでなく、古くてセキュリティが万全ではない関数を新しく安全な関数に自動的に置き換えることができます。In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically (eliminating the need to specify a size argument) and they can automatically replace older, non-secure functions with their newer, secure counterparts. 詳細については、「 Secure Template Overloads」を参照してください。For more information, see Secure Template Overloads.

これらの関数のデバッグ ライブラリのバージョンは、最初にバッファーを 0 xfd を入力します。The debug library versions of these functions first fill the buffer with 0xFD. この動作を無効にするには、_CrtSetDebugFillThreshold.を使用します。To disable this behavior, use _CrtSetDebugFillThreshold.

CRT には、null 終端文字を含む、各整数型の最も長い可能な値に変換するために必要なバッファーのサイズを定義して、いくつかの一般的なベースの文字の署名に便利なマクロが含まれています。The CRT includes convenient macros to 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. 詳しくは、次を参照してください。最大変換数マクロします。For information, see Maximum conversion count macros.

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

Tchar.h のルーチンTchar.h routine _UNICODE および _MBCS が未定義の場合_UNICODE and _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_itot_s_itot_s _itoa_s_itoa_s _itoa_s_itoa_s _itow_s_itow_s
_ltot_s_ltot_s _ltoa_s_ltoa_s _ltoa_s_ltoa_s _ltow_s_ltow_s
_ultot_s_ultot_s _ultoa_s_ultoa_s _ultoa_s_ultoa_s _ultow_s_ultow_s
_i64tot_s_i64tot_s _i64toa_s_i64toa_s _i64toa_s_i64toa_s _i64tow_s_i64tow_s
_ui64tot_s_ui64tot_s _ui64toa_s_ui64toa_s _ui64toa_s_ui64toa_s _ui64tow_s_ui64tow_s

必要条件Requirements

ルーチンによって返される値Routine 必須ヘッダーRequired header
_itoa_s_ltoa_s_ultoa_s_i64toa_s_ui64toa_s_itoa_s, _ltoa_s, _ultoa_s, _i64toa_s, _ui64toa_s <stdlib.h><stdlib.h>
_itow_s, _ltow_s, _ultow_s, _i64tow_s, _ui64tow_s_itow_s, _ltow_s, _ultow_s, _i64tow_s, _ui64tow_s <stdlib.h> または <wchar.h><stdlib.h> or <wchar.h>

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

Example

このサンプルでは、いくつかの整数の変換関数の使用を示します。This sample demonstrates the use of a few of the integer conversion functions. なお、 _countofマクロは、配列の宣言が表示されるは、コンパイラ、およびポインターに放射性がパラメーターではなく、バッファー サイズを決定するのみ機能します。Note that the _countof macro only works to determine buffer size when the array declaration is visible to the compiler, and not for parameters that have decayed to pointers.

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

関連項目See also

データ変換Data Conversion
_itoa、_itow 関数_itoa, _itow functions