wcsxfrm
|
헤더 파일에 정의됨
<wchar.h>
|
||
|
(C99 이전)
(C95 이후) |
||
| (C99 이후) | ||
src
가 가리키는 널 종료 와이드 문자열을 구현에서 정의된 형태로 변환하여,
현재 C 로케일에서 변환된 두 문자열을
wcscmp
로 비교한 결과가 원본 문자열을
wcscoll
로 비교한 결과와 동일하도록 합니다.
변환된 문자열의 첫 번째
count
문자는 종료 널 문자를 포함하여 대상에 기록되며, 전체 변환된 문자열의 길이는 종료 널 문자를 제외하고 반환됩니다.
만약
count
가
0
이면,
dest
는 null 포인터가 허용됩니다.
목차 |
참고 사항
변환된 전체 문자열을 수신할 수 있는 올바른 버퍼의 길이는 1 + wcsxfrm ( NULL , src, 0 )
이 함수는 동일한 와이드 문자열 또는 와이드 문자열 집합을 사용하여 여러 로케일 종속 비교를 수행할 때 사용됩니다. 왜냐하면 모든 문자열을 한 번만 변환하기 위해
wcsxfrm
을 사용하고, 이후 변환된 와이드 문자열을
wcscmp
로 비교하는 것이 더 효율적이기 때문입니다.
매개변수
| dest | - | 변환된 문자열을 쓸 널 종료 와이드 문자열의 첫 번째 요소를 가리키는 포인터 |
| src | - | 변환할 널 종료 와이드 문자 문자열을 가리키는 포인터 |
| count | - | 출력할 최대 문자 수 |
반환값
변환된 와이드 문자열의 길이로, 종료 널 문자는 포함하지 않습니다.
예제
#include <stdio.h> #include <wchar.h> #include <locale.h> int main(void) { setlocale(LC_ALL, "sv_SE.utf8"); const wchar_t *in1 = L"\u00e5r"; wchar_t out1[1+wcsxfrm(NULL, in1, 0)]; wcsxfrm(out1, in1, sizeof out1/sizeof *out1); const wchar_t *in2 = L"\u00e4ngel"; wchar_t out2[1+wcsxfrm(NULL, in2, 0)]; wcsxfrm(out2, in2, sizeof out2/sizeof *out2); printf("In the Swedish locale: "); if(wcscmp(out1, out2) < 0) printf("%ls before %ls\n", in1, in2); else printf("%ls before %ls\n", in2, in1); printf("In lexicographical comparison: "); if(wcscmp(in1, in2) < 0) printf("%ls before %ls\n", in1, in2); else printf("%ls before %ls\n", in2, in1); }
출력:
In the Swedish locale: år before ängel In lexicographical comparison: ängel before år
참고문헌
- C11 표준 (ISO/IEC 9899:2011):
-
- 7.29.4.4.4 wcsxfrm 함수 (p: 434-435)
- C99 표준 (ISO/IEC 9899:1999):
-
- 7.24.4.4.4 wcsxfrm 함수 (p: 380-381)
참조 항목
|
현재 로캘에 따라 두 문자열을 비교함
(함수) |
|
|
(C95)
|
현재 로캘에 따라 두 와이드 문자열을 비교함
(함수) |
|
(C95)
|
두 와이드 문자열을 비교함
(함수) |
|
strcmp가 strcoll과 동일한 결과를 생성하도록 문자열을 변환함
(함수) |
|
|
C++ 문서
for
wcsxfrm
|
|