문자열을 숫자 값으로 변환하는 함수String to Numeric Value Functions

주의Remarks

strtod 패밀리의 각 함수는 null로 끝나는 문자열을 숫자 값으로 변환합니다.Each function in the strtod family converts a null-terminated string to a numeric value. 사용할 수 있는 함수는 다음 표에 나와 있습니다.The available functions are listed in the following table.

함수Function 설명Description
strtod 문자열을 배정밀도 부동 소수점 값으로 변환Convert string to double-precision floating point value
strtol 문자열을 long 정수로 변환Convert string to long integer
strtoul 문자열을 부호 없는 long 정수로 변환Convert string to unsigned long integer
_strtoi64 문자열을 64비트 __int64 정수로 변환Convert string to 64-bit __int64 integer
_strtoui64 문자열을 부호 없는 64비트 __int64 정수로 변환Convert string to unsigned 64-bit __int64 integer

wcstod, wcstol, wcstoul, 및 _wcstoi64는 각각 strtod, strtol, strtoul_strtoi64의 와이드 문자 버전입니다.wcstod, wcstol, wcstoul, and _wcstoi64 are wide-character versions of strtod, strtol, strtoul, and _strtoi64, respectively. 이러한 각 와이드 문자 함수에 대한 문자열 인수는 와이드 문자 문자열이고, 각 함수는 싱글바이트 문자 문자열과 동일하게 동작합니다.The string argument to each of these wide-character functions is a wide-character string; each function behaves identically to its single-byte-character counterpart otherwise.

strtod 함수는 두 개의 인수를 사용합니다. 첫 번째 인수는 입력 문자열이고 두 번째 인수는 변환 프로세스를 종료하는 문자에 대한 포인터입니다.The strtod function takes two arguments: the first is the input string, and the second a pointer to the character which ends the conversion process. strtol, strtoul, _strtoi64_strtoui64는 세 번째 인수를 기수로 사용하여 변환 프로세스에 사용합니다.strtol, strtoul, _strtoi64 and _strtoui64 take a third argument as the number base to use in the conversion process.

입력 문자열은 지정된 형식의 숫자 값으로 해석될 수 있는 문자 시퀀스입니다.The input string is a sequence of characters that can be interpreted as a numerical value of the specified type. 각 함수는 숫자의 일부분으로 인식할 수 없는 첫 문자에서 문자열 읽기를 중지합니다.Each function stops reading the string at the first character it cannot recognize as part of a number. 이 문자는 종료 null 문자일 수 있습니다.This may be the terminating null character. strtol, strtoul, _strtoi64, 및 _strtoui64의 경우 이 종결 문자는 사용자가 제공한 기수보다 크거나 같은 첫 번째 숫자도 될 수 있습니다.For strtol, strtoul, _strtoi64, and _strtoui64, this terminating character can also be the first numeric character greater than or equal to the user-supplied number base.

호출 시 변환 종료 문자에 대해 사용자가 제공한 포인터가 NULL로 설정되어 있지 않은 경우 검색을 중지한 문자에 대한 포인터가 대신 거기에 저장됩니다.If the user-supplied pointer to an end-of-conversion character is not set to NULL at call time, a pointer to the character that stopped the scan will be stored there instead. 올바른 숫자를 찾을 수 없거나 잘못된 밑을 지정하여 변환을 수행할 수 없는 경우에는 문자열 포인터의 값이 해당 주소에 저장됩니다.If no conversion can be performed (no valid digits were found or an invalid base was specified), the value of the string pointer is stored at that address.

strtod는 다음 형식의 문자열이 필요합니다.strtod expects a string of the following form:

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

whitespace는 공백 또는 탭 문자(무시됨)로 구성될 수 있습니다. sign은 더하기 기호(+) 또는 빼기 기호(-)이고 digits는 하나 이상의 10진수입니다.A whitespace may consist of space or tab characters, which are ignored; sign is either plus (+) or minus (-); and digits are one or more decimal digits. 기수 문자 앞에 숫자가 없는 경우 기수 문자 뒤에는 숫자가 하나 이상 있어야 합니다.If no digits appear before the radix character, at least one must appear after the radix character. 10진수 뒤에 지수가 올 수 있습니다. 지수는 소개 문자(d, D, e 또는 E) 및 부호 있는 정수(선택 사항)로 구성됩니다.The decimal digits can be followed by an exponent, which consists of an introductory letter (d, D, e, or E) and an optionally signed integer. 지수 부분과 기수 문자가 모두 없으면 기수 문자는 문자열의 마지막 숫자를 따르는 것으로 간주합니다.If neither an exponent part nor a radix character appears, a radix character is assumed to follow the last digit in the string. 이 형식에 맞지 않는 첫 번째 문자가 발견되면 검색이 중지됩니다.The first character that does not fit this form stops the scan.

strtol, strtoul, _strtoi64, 및 _strtoui64 함수는 다음과 같은 형식의 문자열을 필요로 합니다.The strtol, strtoul, _strtoi64, and _strtoui64 functions expect a string of the following form:

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

기본 인수는 2와 36 사이인 경우 숫자의 밑으로 사용됩니다.If the base argument is between 2 and 36, then it is used as the base of the number. 0인 경우 변환 종료 포인터에서 참조하는 시작 문자가 밑을 결정하는 데 사용됩니다.If it is 0, the initial characters referenced to by the end-of-conversion pointer are used to determine the base. 첫 번째 문자가 0이고 두 번째 문자가 'x' 또는 'X'가 아니면 문자열은 8진수 정수로 해석됩니다. 그렇지 않은 경우 10진수로 해석됩니다.If the first character is 0 and the second character is not 'x' or 'X', the string is interpreted as an octal integer; otherwise, it is interpreted as a decimal number. 첫 번째 문자가 '0'이고 두 번째 문자가 'x' 또는 'X'이면 문자열은 16진수 정수로 해석됩니다.If the first character is '0' and the second character is 'x' or 'X', the string is interpreted as a hexadecimal integer. 첫 번째 문자가 '1'~'9' 이면 문자열은 10진수 정수로 해석됩니다.If the first character is '1' through '9', the string is interpreted as a decimal integer. 문자 'a'~'z' 또는 'A'~'Z'에는 값 10~35가 할당됩니다. 할당된 값이 보다 작은 문자만 사용할 수 있습니다.The letters 'a' through 'z' (or 'A' through 'Z') are assigned the values 10 through 35; only letters whose assigned values are less than base are permitted. strtoul_strtoui64에서는 더하기 기호(+) 또는 빼기 기호(-) 접두사를 사용할 수 있습니다. 선행 빼기 기호는 반환 값이 부정됨을 나타냅니다.strtoul and _strtoui64 allow a plus (+) or minus (-) sign prefix; a leading minus sign indicates that the return value is negated.

출력값은 로캘의 LC_NUMERIC 범주 설정에 영향을 받습니다. 자세한 내용은 setlocale을 참조하세요.The output value is affected by the setting of the LC_NUMERIC category setting of the locale; see setlocale for more information. _l 접미사가 없는 이러한 함수 버전은 이 로캘 종속 동작에 현재 로캘을 사용하며, _l 접미사가 있는 버전은 전달된 로캘 매개 변수를 대신 사용하는 경우를 제외하고는 동일합니다.The versions of these functions without the _l suffix use the current locale for this locale-dependent behavior; the versions with the _l suffix are identical except that they use the locale parameter passed in instead.

이러한 함수에서 반환하는 값이 오버플로 또는 언더플로의 원인이 되거나 변환이 불가능한 경우 특수한 경우 값이 다음과 같이 반환됩니다.When the value returned by these functions would cause an overflow or underflow, or when conversion is not possible, special case values are returned as shown:

함수Function 조건Condition 반환된 값Value returned
strtod 오버플로Overflow +/- HUGE_VAL
strtod 언더플로 또는 변환 없음Underflow or no conversion 00
strtol + 오버플로+ Overflow LONG_MAXLONG_MAX
strtol - 오버플로- Overflow LONG_MINLONG_MIN
strtol 언더플로 또는 변환 없음Underflow or no conversion 00
_strtoi64 + 오버플로+ Overflow _I64_MAX_I64_MAX
_strtoi64 - 오버플로- Overflow _I64_MIN_I64_MIN
_strtoi64 변환 없음No conversion 00
_strtoui64 오버플로Overflow _UI64_MAX_UI64_MAX
_strtoui64 변환 없음No conversion 00

_I64_MAX, I64_MIN_UI64_MAX는 LIMITS.H에 정의됩니다._I64_MAX, I64_MIN, and _UI64_MAX are defined in LIMITS.H.

wcstod, wcstol, wcstoul, _wcstoi64_wcstoui64는 각각 strtod, strtol, strtoul, _strtoi64_strtoui64의 와이드 문자 버전이며, 이러한 각 와이드 문자 함수의 변환 종료 인수에 대한 포인터는 와이드 문자열입니다.wcstod, wcstol, wcstoul, _wcstoi64, and _wcstoui64 are wide-character versions of strtod, strtol, strtoul, _strtoi64, and _strtoui64, respectively; the pointer to an end-of-conversion argument to each of these wide-character functions is a wide-character string. 그렇지 않은 경우 이러한 각 와이드 문자 함수는 싱글바이트 문자 함수와 동일하게 동작합니다.Otherwise, each of these wide-character functions behaves identically to its single-byte-character counterpart.

참고 항목See Also

데이터 변환 Data Conversion
로캘 Locale
멀티바이트 문자 시퀀스 해석 Interpretation of Multibyte-Character Sequences
부동 소수점 지원 Floating-Point Support
atof, _atof_l, _wtof, _wtof_latof, _atof_l, _wtof, _wtof_l