Namespaces
Variants

wcsxfrm

cppreference.net에서
헤더 <wchar.h>
size_t wcsxfrm( wchar_t* dest, const wchar_t* src, size_t count );
에서 정의됨 (C95부터)
(C99까지)
size_t wcsxfrm( wchar_t* restrict dest, const wchar_t* restrict src, size_t count );
(C99부터)

src이 가리키는 널 종료 와이드 문자열을 구현 정의 형식으로 변환하여, 변환된 두 문자열을 wcscmp로 비교한 결과가 현재 C 로케일에서 wcscoll로 원본 문자열을 비교한 결과와 동일하도록 합니다.

변환된 문자열의 처음 count 문자가 대상에 기록되며, 종료 널 문자를 포함하고, 전체 변환된 문자열의 길이(종료 널 문자 제외)가 반환됩니다.

count이 0이면, dest은 널 포인터가 될 수 있습니다.

참고

전체 변환된 문자열을 수신할 수 있는 버퍼의 올바른 길이는 1 + wcsxfrm(NULL, src, 0)

입니다. 이 함수는 동일한 와이드 문자열 또는 와이드 문자열 집합을 사용하여 여러 로케일 종속 비교를 수행할 때 사용되며, 모든 문자열을 한 번에 변환하기 위해 wcsxfrm을 사용한 후 변환된 와이드 문자열을 wcscmp와 비교하는 것이 더 효율적이기 때문입니다.

매개변수

dest - 변환된 문자열을 쓸 널 종료 와이드 문자열의 첫 번째 요소를 가리키는 포인터
src - 변환할 널 종료 와이드 문자 문자열을 가리키는 포인터
count - 출력할 최대 문자 수

반환값

변환된 와이드 문자열의 길이. 종료 널 문자는 포함되지 않습니다.

예제

#include <locale.h>
#include <stdio.h>
#include <wchar.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

참조

  • C23 표준 (ISO/IEC 9899:2024):
  • 7.29.4.4.4 wcsxfrm 함수 (p: TBD)
  • C17 표준 (ISO/IEC 9899:2018):
  • 7.29.4.4.4 wcsxfrm 함수 (p: TBD)
  • 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)
두 와이드 문자열을 비교합니다
(함수)
strcmp가 strcoll과 같은 결과를 내도록 문자열을 변환합니다
(함수)
C++ 문서 에 대한 wcsxfrm