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
를 반환합니다. 잘못된 문자의 경우 errno
는 EILSEQ
로 설정됩니다.
설명
strxfrm
함수는 strSource
가 가리키는 문자열을 strDest
에 저장된 새 데이터 정렬된 형식으로 변환합니다. null 문자를 포함하여 count
개 이하의 문자가 변환되어 결과 문자열에 저장됩니다. 로캘의 LC_COLLATE
범주 설정을 사용하여 변환이 일어납니다. LC_COLLATE
에 대한 자세한 내용은 setlocale
를 참조하세요. strxfrm
은 로캘 종속인 동작에 현재 로캘을 사용합니다. 현재 로캘 대신 전달된 로캘을 사용한다는 것을 제외하면 _strxfrm_l
도 동일합니다. 자세한 내용은 Locale을 참조하세요.
변환 후 변환된 두 문자열을 strcmp
사용하여 호출하면 원래 두 문자열에 적용된 strcoll
호출 결과와 동일한 결과가 생성됩니다. strcoll
및 stricoll
과 마찬가지로, strxfrm
은 자동으로 멀티바이트 문자열을 적절하게 처리합니다.
wcsxfrm
은 strxfrm
의 와이드 문자 버전이며, wcsxfrm
의 문자열 인수는 와이드 문자 포인터입니다. 문자열 wcsxfrm
변환 후 두 개의 변환된 문자열을 wcscmp
사용하여 호출하면 원래 두 문자열에 적용된 wcscoll
호출의 결과와 동일한 결과가 생성됩니다. 그렇지 않으면wcsxfrm
과 strxfrm
이 동일하게 작동합니다. wcsxfrm
은 로캘 종속적인 동작에 현재 로캘을 사용합니다. _wcsxfrm_l
은 현재 로캘 대신에 전달된 로캘을 사용합니다.
이러한 함수는 해당 함수 매개 변수의 유효성을 검사합니다. strSource
null 포인터이거나 NULL
strDest
포인터이거나(개수가 0이 아니면) 또는 개수보다 INT_MAX
크면 count
매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용된 경우 이러한 함수는 errno
를 EINVAL
로 설정하고 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