설명
패밀리의 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] [{deD | | 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 접미사가 있는 버전은 전달된 로캘 매개 변수를 대신 사용하는 경우를 제외하고는 동일합니다.
이러한 함수에서 반환된 값으로 인해 오버플로 또는 언더플로가 발생하거나 변환이 불가능한 경우 다음과 같이 특수 사례 값이 반환됩니다.
| 함수 | 조건 | 반환 값 |
|---|---|---|
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