wcstoimax, wcstoumax
|
헤더 파일에 정의됨
<inttypes.h>
|
||
|
intmax_t
wcstoimax
(
const
wchar_t
*
restrict
nptr,
wchar_t ** restrict endptr, int base ) ; |
(C99부터) | |
|
uintmax_t
wcstoumax
(
const
wchar_t
*
restrict
nptr,
wchar_t ** restrict endptr, int base ) ; |
(C99부터) | |
nptr
이 가리키는 와이드 문자열에서 부호 없는 정수 값을 해석합니다.
(호출
iswspace
로 식별되는) 모든 공백 문자들을 버리고 첫 번째 비-공백 문자를 찾은 후, 유효한
base-n
(여기서 n=
base
) 부호 없는 정수 숫자 표현을 형성하기 위해 가능한 많은 문자들을 취하여 정수 값으로 변환합니다. 유효한 부호 없는 정수 값은 다음 부분들로 구성됩니다:
- (선택 사항) 양수 또는 음수 부호
-
(선택 사항)
접두사 (
0) - 8진법 기수 표시 (기수가 8 또는 0 인 경우에만 적용됨) -
(선택 사항)
접두사 (
0x또는0X) - 16진법 기수 표시 (기수가 16 또는 0 인 경우에만 적용됨) - 숫자 시퀀스
유효한 base 값의 집합은
{0, 2, 3, ..., 36}
입니다. base-
2
정수의 유효한 숫자 집합은
{0, 1}
이고, base-
3
정수의 경우
{0, 1, 2}
입니다. 이런 식으로 계속됩니다.
10
보다 큰 base의 경우, 유효한 숫자에는 알파벳 문자가 포함되며, base-
11
정수의 경우
Aa
부터 시작하여 base-
36
정수의 경우
Zz
까지입니다. 문자들의 대소문자는 무시됩니다.
현재 설치된 C locale 에서는 추가 숫자 형식을 허용할 수 있습니다.
base
의 값이
0
인 경우, 숫자 진법은 자동으로 감지됩니다: 접두사가
0
이면 8진법, 접두사가
0x
또는
0X
이면 16진법, 그렇지 않으면 10진법입니다.
마이너스 부호가 입력 시퀀스의 일부였다면, 숫자 시퀀스로 계산된 숫자 값은 결과 타입에서 단항 마이너스 연산자에 의해 부호가 반전되며, 이는 부호 없는 정수 래핑 규칙을 적용합니다.
이 함수는
endptr
이 가리키는 포인터를 해석된 마지막 문자 다음의 와이드 문자를 가리키도록 설정합니다.
endptr
이 널 포인터인 경우, 이는 무시됩니다.
목차 |
매개변수
| nptr | - | 해석될 null 종료 와이드 문자열에 대한 포인터 |
| endptr | - | 와이드 문자에 대한 포인터의 포인터 |
| base | - | base 해석된 정수 값의 기수 |
반환값
성공 시
str
의 내용에 해당하는 정수 값. 변환된 값이 해당 반환 타입의 범위를 벗어나는 경우 범위 오류가 발생하며 적절하게
INTMAX_MAX
,
INTMAX_MIN
,
UINTMAX_MAX
, 또는
0
이 반환됩니다. 변환을 수행할 수 없는 경우
0
이 반환됩니다.
예제
#include <errno.h> #include <inttypes.h> #include <stdio.h> #include <string.h> #include <wchar.h> int main(void) { wchar_t* endptr; wprintf(L"%ld\n", wcstoimax(L" -123junk", &endptr, 10)); /* base 10 */ wprintf(L"%ld\n", wcstoimax(L"11111111", &endptr, 2)); /* base 2 */ wprintf(L"%ld\n", wcstoimax(L"XyZ", &endptr, 36)); /* base 36 */ wprintf(L"%ld\n", wcstoimax(L"010", &endptr, 0)); /* octal auto-detection */ wprintf(L"%ld\n", wcstoimax(L"10", &endptr, 0)); /* decimal auto-detection */ wprintf(L"%ld\n", wcstoimax(L"0x10", &endptr, 0)); /* hexadecimal auto-detection */ /* range error */ /* LONG_MAX+1 --> LONG_MAX */ errno = 0; wprintf(L"%ld\n", wcstoimax(L"9223372036854775808", &endptr, 10)); wprintf(L"%s\n", strerror(errno)); }
출력:
-123 255 44027 8 10 16 9223372036854775807 Numerical result out of range
참고문헌
- C11 표준 (ISO/IEC 9899:2011):
-
- 7.8.2.4 wcstoimax 및 wcstoumax 함수 (p: 220)
- C99 표준 (ISO/IEC 9899:1999):
-
- 7.8.2.4 wcstoimax 및 wcstoumax 함수 (p: 201)
참조 항목
|
(C99)
(C99)
|
바이트 문자열을
intmax_t
또는
uintmax_t
로 변환
(함수) |
|
(C95)
(C99)
|
와이드 문자열을 정수 값으로 변환
(함수) |
|
(C95)
(C99)
|
와이드 문자열을 부호 없는 정수 값으로 변환
(함수) |
|
C++ 문서
for
wcstoimax
,
wcstoumax
|
|