문자열을 숫자 값으로 변환하는 함수

설명

패밀리의 strto* 각 함수는 null로 끝나는 문자열을 숫자 값으로 변환합니다. 사용할 수 있는 함수는 다음 표에 나와 있습니다.

함수 설명
strtod 문자열을 배정밀도 부동 소수점 값으로 변환
strtol 문자열을 long 정수로 변환
strtoul 문자열을 부호 없는 long 정수로 변환
_strtoi64 문자열을 64비트 __int64 정수로 변환
_strtoui64 문자열을 부호 없는 64비트 __int64 정수로 변환

wcstod, wcstol, wcstoul, 및 _wcstoi64는 각각 strtod, strtol, strtoul_strtoi64의 와이드 문자 버전입니다. 이러한 각 와이드 문자 함수에 대한 문자열 인수는 와이드 문자 문자열이고, 각 함수는 싱글바이트 문자 문자열과 동일하게 동작합니다.

함수는 strtod 두 개의 인수를 사용합니다. 첫 번째는 입력 문자열이고, 두 번째 인수는 변환 프로세스를 종료하는 문자에 대한 포인터입니다. strtol, strtoul_strtoi64_strtoui64 번째 인수를 변환 프로세스에 사용할 숫자 베이스로 사용합니다.

입력 문자열은 지정된 형식의 숫자 값으로 해석될 수 있는 문자 시퀀스입니다. 각 함수는 숫자의 일부로 인식할 수 없는 첫 번째 문자에서 문자열 읽기를 중지합니다. 이 문자는 종료 null 문자일 수 있습니다. strtol, strtoul, _strtoi64, 및 _strtoui64의 경우 이 종결 문자는 사용자가 제공한 기수보다 크거나 같은 첫 번째 숫자도 될 수 있습니다.

사용자가 제공한 변환 종료 문자에 대한 포인터가 호출 시 또는 nullptr 호출 시 설정 NULL 되지 않은 경우 검색을 중지한 문자에 대한 포인터가 대신 저장됩니다. 올바른 숫자를 찾을 수 없거나 잘못된 밑을 지정하여 변환을 수행할 수 없는 경우에는 문자열 포인터의 값이 해당 주소에 저장됩니다.

strtod는 다음 형식의 문자열이 필요합니다.

[whitespace] [sign] [digits] [.digits] [{d | D | e | E}[sign]digits]

A whitespace 는 무시 sign 되는 공백 또는 탭 문자로 구성될 수 있으며 더하기(+) 또는 빼기(-);이며 digits 하나 이상의 소수 자릿수입니다. 기수 문자 앞에 숫자가 없는 경우 기수 문자 뒤에는 숫자가 하나 이상 있어야 합니다. 10진수 뒤에 지수가 올 수 있습니다. 지수는 소개 문자(d, D, e 또는 E) 및 부호 있는 정수(선택 사항)로 구성됩니다. 지수 부분이나 radix 문자가 나타나지 않으면 radix 문자가 문자열의 마지막 숫자를 따르는 것으로 간주됩니다. 이 양식에 맞지 않는 첫 번째 문자는 검사를 중지합니다.

strtol, strtoul, _strtoi64, 및 _strtoui64 함수는 다음과 같은 형식의 문자열을 필요로 합니다.

[whitespace] [{+ | -}] [0 [{ x | X }]] [digits]

기본 인수가 2에서 36 사이이면 숫자의 기준으로 사용됩니다. 0인 경우 변환 종료 포인터에서 참조하는 초기 문자를 사용하여 기본을 확인합니다. 첫 번째 문자가 0이고 두 번째 문자가 'x' 또는 'X'가 아니면 문자열이 8진수로 해석됩니다. 그렇지 않으면 10진수로 해석됩니다. 첫 번째 문자가 '0'이고 두 번째 문자가 'x' 또는 'X'이면 문자열은 16진수 정수로 해석됩니다. 첫 번째 문자가 '1'~'9' 이면 문자열은 10진수 정수로 해석됩니다. 문자 'a'~'z' 또는 'A'~'Z'에는 값 10~35가 할당됩니다. 할당된 값이 base보다 작은 문자만 사용할 수 있습니다. strtoul_strtoui64에서는 더하기 기호(+) 또는 빼기 기호(-) 접두사를 사용할 수 있습니다. 선행 빼기 기호는 반환 값이 부정됨을 나타냅니다.

출력 값은 로캘의 LC_NUMERIC 범주 설정 설정의 영향을 받습니다. 자세한 내용은 setlocale를 참조하세요. _l 접미사가 없는 이러한 함수 버전은 이 로캘 종속 동작에 현재 로캘을 사용하며, _l 접미사가 있는 버전은 전달된 로캘 매개 변수를 대신 사용하는 경우를 제외하고는 동일합니다.

이러한 함수에서 반환된 값으로 인해 오버플로 또는 언더플로가 발생하거나 변환이 불가능한 경우 다음과 같이 특수 사례 값이 반환됩니다.

함수 Condition 반환 값
strtod 오버플로 +/- HUGE_VAL
strtod 언더플로 또는 변환 없음 0
strtol + 오버플로 LONG_MAX
strtol - 오버플로 LONG_MIN
strtol 언더플로 또는 변환 없음 0
_strtoi64 + 오버플로 _I64_MAX
_strtoi64 - 오버플로 _I64_MIN
_strtoi64 변환 없음 0
_strtoui64 오버플로 _UI64_MAX
_strtoui64 변환 없음 0

_I64_MAX, _I64_MIN_UI64_MAX 에 정의 <LIMITS.H>됩니다.

wcstod, wcstol, wcstoul, _wcstoi64_wcstoui64는 각각 strtod, strtol, strtoul, _strtoi64_strtoui64의 와이드 문자 버전이며, 이러한 각 와이드 문자 함수의 변환 종료 인수에 대한 포인터는 와이드 문자열입니다. 그렇지 않은 경우 이러한 각 와이드 문자 함수는 싱글바이트 문자 함수와 동일하게 동작합니다.

참고 항목

데이터 변환
Locale
멀티바이트 문자 시퀀스 해석
수학 및 부동 소수점 지원
atof, _atof_l, _wtof, _wtof_l