다음을 통해 공유


itoa, _itoa,ltoa, _ltoa, ultoa, _ultoa, _i64toa, _ui64toa, _itow_ltow, _ultow_i64tow_ui64tow

정수를 문자열로 변환합니다. 이러한 함수의 더 안전한 버전을 사용할 수 있습니다. 함수를 참조_itoa_s하세요. _itow_s

구문

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

매개 변수

value
변환할 숫자입니다.

buffer
변환 결과를 보유하는 버퍼입니다.

radix
2-36 범위여야 하는 변환 value에 사용할 기준입니다.

size
문자 형식 단위의 버퍼 길이입니다. 이 매개 변수는 C++의 buffer 인수에서 유추됩니다.

반환 값

이러한 각 함수는 buffer에 대한 포인터를 반환합니다. 오류 반환이 없습니다.

설명

, _ltoa, _ultoa_ui64toa _i64toa함수는 _itoa지정된 value 인수의 숫자를 null로 끝나는 문자열로 변환하고 결과를 저장합니다(최대 33자 _itoa, _ltoa_ultoa65자 및 _i64toa_ui64toa)buffer. 10과 같고 value 음수이면 radix 저장된 문자열의 첫 번째 문자는 빼기 기호(-)입니다. , _ltow, _ultow_i64tow_ui64tow 함수는 _itow각각 , _ltoa_ultoa, _i64toa_ui64toa_itoa와이드 문자 버전입니다.

Important

이러한 함수는 너무 작은 버퍼의 끝을 지나서 작성할 수 있습니다. 버퍼 오버런을 방지하려면 변환된 숫자와 후행 null 문자 및 부호 문자를 저장할 수 있을 만큼 큰지 확인 buffer 합니다. 이러한 함수를 잘못 사용하면 코드에서 심각한 보안 문제가 발생할 수 있습니다.

보안 문제가 발생할 가능성이 있으므로 기본적으로 이러한 함수는 사용 중단 경고 C4996을 발생합니다. 이 함수 또는 변수는 안전하지 않을 수 있습니다. 대신 사용하는 safe_function 것이 좋습니다. 사용 중단을 사용하지 않으려면 .를 사용합니다 _CRT_SECURE_NO_WARNINGS. 경고 메시지에서 제안된 내용을 사용하도록 safe_function 소스 코드를 변경하는 것이 좋습니다. 더 안전한 함수는 지정된 버퍼 크기보다 더 많은 문자를 쓰지 않습니다. 자세한 내용은 함수를 _itow_s 참조_itoa_s하세요.

사용 중단 경고 없이 이러한 함수를 사용하려면 CRT 헤더를 포함하기 전에 전처리기 매크로를 정의 _CRT_SECURE_NO_WARNINGS 합니다. 명령에 컴파일러 옵션을 추가하여 /D_CRT_SECURE_NO_WARNINGS 정의할 cl 수 있습니다. 그렇지 않으면 소스 파일에서 매크로를 정의합니다. 미리 컴파일된 헤더를 사용하는 경우 미리 컴파일된 헤더 포함 파일 pch.h 의 맨 위에 있는 매크로를 정의합니다(stdafx.h Visual Studio 2017 및 이전 버전). 소스 코드에서 매크로를 정의하려면 다음 예제와 같이 CRT 헤더를 포함하기 전에 지시문을 사용합니다 #define .

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdlib.h>

C++에서 이러한 함수에는 더 안전한 함수를 호출하는 템플릿 오버로드가 있습니다. 자세한 내용은 안전한 템플릿 오버로드를 참조하세요.

기본적으로 이러한 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.

POSIX 이름 itoaltoaultoa 함수의 _itoa_ltoa_ultoa 별칭으로 존재합니다. POSIX 이름은 ISO C의 구현별 전역 함수 이름 규칙을 따르지 않으므로 더 이상 사용되지 않습니다. 기본적으로 이러한 함수는 사용 중단 경고 C4996을 발생합니다. 이 항목의 POSIX 이름은 더 이상 사용되지 않습니다. 대신 ISO C 및 C++ 준수 이름을 new_name사용합니다. 이러한 함수의 더 안전한 버전을 사용하려면 소스 코드를 변경하는 것이 좋습니다. _itoa_s_ltoa_s_ultoa_s 자세한 내용은 함수를 _itow_s 참조_itoa_s하세요.

소스 코드 이식성을 위해 코드에 POSIX 이름을 유지하는 것이 좋습니다. 사용 중단 경고 없이 이러한 함수를 사용하려면 CRT 헤더를 포함하기 전에 전처리기 매크로와 _CRT_SECURE_NO_WARNINGS 전처리기 매크로를 모두 _CRT_NONSTDC_NO_WARNINGS 정의합니다. 명령에 컴파일러 옵션과 /D_CRT_NONSTDC_NO_WARNINGS 컴파일러 옵션을 추가하여 /D_CRT_SECURE_NO_WARNINGS 정의할 cl 수 있습니다. 그렇지 않으면 원본 파일에서 매크로를 정의합니다. 미리 컴파일된 헤더를 사용하는 경우 미리 컴파일된 헤더 포함 파일의 맨 위에 있는 매크로를 정의합니다. 소스 코드에서 매크로를 정의하려면 다음 예제와 같이 CRT 헤더를 포함하기 전에 지시문을 사용합니다 #define .

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

최대 변환 수 매크로

변환을 위한 보안 버퍼를 만들 수 있도록 CRT에는 편리한 매크로가 포함되어 있습니다. 이러한 매크로는 여러 공통 베이스에 대해 null 종결자 및 부호 문자를 포함하여 각 정수 형식의 가능한 가장 긴 값을 변환하는 데 필요한 버퍼의 크기를 정의합니다. 변환 버퍼가 지정된 radix베이스에서 변환을 받을 수 있을 만큼 충분히 큰지 확인하려면 버퍼를 할당할 때 이러한 정의된 매크로 중 하나를 사용합니다. 매크로를 사용하면 정수 형식을 문자열로 변환할 때 버퍼 오버런 오류를 방지할 수 있습니다. 이러한 매크로는 원본에 stdlib.h 또는 wchar.h를 포함할 때 정의됩니다.

문자열 변환 함수에서 이러한 매크로 중 하나를 사용하려면 적절한 문자 형식의 변환 버퍼를 선언하고 정수 형식 및 기본에 대한 매크로 값을 버퍼 차원으로 사용합니다. 다음 표에는 나열된 기본에 대한 각 함수에 적합한 매크로가 나열되어 있습니다.

함수 radix 매크로
_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

이 예제에서는 변환 수 매크로를 사용하여 base 2에 포함할 수 있을 만큼 큰 버퍼를 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;
}

일반 텍스트 루틴 매핑

Tchar.h 루틴 _UNICODE_MBCS 정의되지 않음 정의된 _MBCS 정의된 _UNICODE
_itot _itoa _itoa _itow
_ltot _ltoa _ltoa _ltow
_ultot _ultoa _ultoa _ultow
_i64tot _i64toa _i64toa _i64tow
_ui64tot _ui64toa _ui64toa _ui64tow

요구 사항

루틴에서 반환된 값 필수 헤더
itoa, , ltoaultoa <stdlib.h>
_itoa, _ltoa, _ultoa, _i64toa_ui64toa <stdlib.h>
_itow, _ltow, _ultow, _i64tow_ui64tow <stdlib.h> 또는 <wchar.h>

이러한 함수 및 매크로는 Microsoft 전용입니다. 호환성에 대한 자세한 내용은 호환성을 참조하세요.

예시

이 샘플에서는 정수 변환 함수 중 일부를 사용하는 방법을 보여 줍니다. 매크로를 사용하여 _CRT_SECURE_NO_WARNINGS 경고 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)

참고 항목

데이터 변환
_itoa_s, _itow_s 함수