다음을 통해 공유


strxfrm, wcsxfrm, _strxfrm_l_wcsxfrm_l

로캘별 정보를 기반으로 문자열을 변형합니다.

구문

size_t strxfrm(
   char *strDest,
   const char *strSource,
   size_t count
);
size_t wcsxfrm(
   wchar_t *strDest,
   const wchar_t *strSource,
   size_t count
);
size_t _strxfrm_l(
   char *strDest,
   const char *strSource,
   size_t count,
   _locale_t locale
);
size_t wcsxfrm_l(
   wchar_t *strDest,
   const wchar_t *strSource,
   size_t count,
   _locale_t locale
);

매개 변수

strDest
대상 문자열입니다.

strSource
소스 문자열입니다.

count
에 배치할 최대 문자 수입니다 strDest.

locale
사용할 로캘입니다.

반환 값

종료 null 문자를 세지 않고 변형된 문자열의 길이를 반환합니다. 반환 값이 count보다 크거나 같으면 strDest의 콘텐츠는 예측할 수 없습니다. 오류에서 각 함수는 errno를 설정하고 INT_MAX를 반환합니다. 잘못된 문자의 경우 errnoEILSEQ로 설정됩니다.

설명

strxfrm 함수는 strSource가 가리키는 문자열을 strDest에 저장된 새 데이터 정렬된 형식으로 변환합니다. null 문자를 포함하여 count개 이하의 문자가 변환되어 결과 문자열에 저장됩니다. 로캘의 LC_COLLATE 범주 설정을 사용하여 변환이 일어납니다. LC_COLLATE에 대한 자세한 내용은 setlocale를 참조하세요. strxfrm은 로캘 종속인 동작에 현재 로캘을 사용합니다. 현재 로캘 대신 전달된 로캘을 사용한다는 것을 제외하면 _strxfrm_l도 동일합니다. 자세한 내용은 Locale을 참조하세요.

변환 후 변환된 두 문자열을 strcmp 사용하여 호출하면 원래 두 문자열에 적용된 strcoll 호출 결과와 동일한 결과가 생성됩니다. strcollstricoll과 마찬가지로, strxfrm은 자동으로 멀티바이트 문자열을 적절하게 처리합니다.

wcsxfrmstrxfrm의 와이드 문자 버전이며, wcsxfrm의 문자열 인수는 와이드 문자 포인터입니다. 문자열 wcsxfrm변환 후 두 개의 변환된 문자열을 wcscmp 사용하여 호출하면 원래 두 문자열에 적용된 wcscoll 호출의 결과와 동일한 결과가 생성됩니다. 그렇지 않으면wcsxfrmstrxfrm 이 동일하게 작동합니다. wcsxfrm은 로캘 종속적인 동작에 현재 로캘을 사용합니다. _wcsxfrm_l은 현재 로캘 대신에 전달된 로캘을 사용합니다.

이러한 함수는 해당 함수 매개 변수의 유효성을 검사합니다. strSource null 포인터이거나 NULL strDest 포인터이거나(개수가 0이 아니면) 또는 개수보다 INT_MAX크면 count 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용된 경우 이러한 함수는 errnoEINVAL로 설정하고 INT_MAX을 반환합니다.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.

일반 텍스트 루틴 매핑

TCHAR.H 루틴 _UNICODE_MBCS 정의되지 않음 정의된 _MBCS 정의된 _UNICODE
_tcsxfrm strxfrm strxfrm wcsxfrm
_tcsxfrm_l _strxfrm_l _strxfrm_l _wcsxfrm_l

"C" 로캘에서 문자 집합(ASCII 문자 집합)의 순서는 사전적 문자 순서와 같습니다. 그러나 다른 로캘에서 문자 집합의 문자 순서는 사전적 문자 순서와 다를 수 있습니다. 예를 들어 특정 유럽 로캘에서 문자 'a'(값 0x61)는 'ä' 문자 앞에 섰습니다. 문자 집합의 (값 0xE4)이지만 문자 'ä'는 문자 'a'의 사전적 앞에 섰습니다.

문자 집합과 사전적 문자 순서가 다른 로캘에서는 원본 문자열에 대해 strxfrm을 사용한 다음 결과 문자열에 strcmp를 사용하여 현재 로캘의 LC_COLLATE 범주 설정에 따라 사전적 문자열 비교를 수행하십시오. 따라서 위의 로캘에서 사전순으로 두 문자열을 비교하기 위해서는 strxfrm을 원본 문자열에, strcmp를 결과 문자열에 사용합니다. 또는 원본 문자열에 strcoll 대신 strcmp을 사용할 수 있습니다.

strxfrm 는 기본적으로 .와 함께 래퍼 LCMapString 입니다 LCMAP_SORTKEY.

다음 식의 값은 원본 문자열의 strxfrm 변환을 저장하기 위해 필요한 배열의 크기입니다.

1 + strxfrm( NULL, string, 0 )

"C" 로캘에서만 strxfrm 다음 함수 호출과 동일합니다.

strncpy( _string1, _string2, _count );
return( strlen( _string1 ) );

요구 사항

루틴에서 반환된 값 필수 헤더
strxfrm <string.h>
wcsxfrm <string.h> 또는 <wchar.h>
_strxfrm_l <string.h>
_wcsxfrm_l <string.h> 또는 <wchar.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

참고 항목

데이터 변환
localeconv
setlocale, _wsetlocale
Locale
문자열 조작
strcoll 함수
strcmp, , wcscmp_mbscmp
strncmp, wcsncmp, _mbsncmp_mbsncmp_l