strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_lstrxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l

로캘별 정보를 기반으로 문자열을 변형합니다.Transform a string based on locale-specific information.

구문Syntax

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
);

매개 변수Parameters

strDeststrDest
대상 문자열입니다.Destination string.

strSourcestrSource
원본 문자열입니다.Source string.

countcount
Strdest에 저장할 최대 문자 수입니다.Maximum number of characters to place in strDest.

localelocale
사용할 로캘입니다.The locale to use.

Return ValueReturn Value

종료 null 문자를 세지 않고 변형된 문자열의 길이를 반환합니다.Returns the length of the transformed string, not counting the terminating null character. 반환 값이 count보다 크거나 같으면 strdest 의 콘텐츠를 예측할 수 없습니다.If the return value is greater than or equal to count, the content of strDest is unpredictable. 오류가 발생 하면 각 함수는 errno 를 설정 하 고 INT_MAX을 반환 합니다.On an error, each function sets errno and returns INT_MAX. 잘못 된 문자의 경우 errnoeilseq로 설정 됩니다.For an invalid character, errno is set to EILSEQ.

설명Remarks

Strxfrm 함수는 strsource 에 의해 가리키는 문자열을 strsource에 저장 된 새로운 정렬 된 형식으로 변환 합니다.The strxfrm function transforms the string pointed to by strSource into a new collated form that is stored in strDest. Null 문자를 포함 하 여 count 개 이하의 문자가 변환 되어 결과 문자열에 배치 됩니다.No more than count characters, including the null character, are transformed and placed into the resulting string. 변환은 로캘의 LC_COLLATE 범주 설정을 사용 하 여 수행 됩니다.The transformation is made using the locale's LC_COLLATE category setting. LC_COLLATE에 대 한 자세한 내용은 setlocale을 참조 하세요.For more information on LC_COLLATE, see setlocale. strxfrm 는 로캘 종속 동작에 현재 로캘을 사용 합니다. _strxfrm_l 은 현재 로캘 대신 전달 된 로캘을 사용 한다는 점을 제외 하 고 동일 합니다.strxfrm uses the current locale for its locale-dependent behavior; _strxfrm_l is identical except that it uses the locale passed in instead of the current locale. 자세한 내용은 Locale을 참조하세요.For more information, see Locale.

변환 후 변환 된 두 문자열을 사용 하 여 strcmp 를 호출 하면 원래 두 문자열에 적용 된 strcoll 에 대 한 호출과 동일한 결과가 발생 합니다.After the transformation, a call to strcmp with the two transformed strings yields results identical to those of a call to strcoll applied to the original two strings. Strcollstricoll와 마찬가지로 strxfrm 는 자동으로 멀티 바이트 문자열을 적절 하 게 처리 합니다.As with strcoll and stricoll, strxfrm automatically handles multibyte-character strings as appropriate.

wcsxfrmstrxfrm의 와이드 문자 버전입니다. wcsxfrm 의 문자열 인수는 와이드 문자 포인터입니다.wcsxfrm is a wide-character version of strxfrm; the string arguments of wcsxfrm are wide-character pointers. Wcsxfrm의 경우 문자열 변환 후 변환 된 문자열이 두 개인 wcscmp 에 대 한 호출은 원래 두 문자열에 적용 된 wcscoll 에 대 한 호출의 결과와 동일한 결과를 생성 합니다.For wcsxfrm, after the string transformation, a call to wcscmp with the two transformed strings yields results identical to those of a call to wcscoll applied to the original two strings. wcsxfrmstrxfrm 는 동일 하 게 동작 합니다.wcsxfrm and strxfrm behave identically otherwise. wcsxfrm 는 로캘 종속 동작에 현재 로캘을 사용 합니다. _wcsxfrm_l 은 현재 로캘 대신 전달 된 로캘을 사용 합니다.wcsxfrm uses the current locale for its locale-dependent behavior; _wcsxfrm_l uses the locale passed in instead of the current locale.

이러한 함수는 해당 함수 매개 변수의 유효성을 검사합니다.These functions validate their parameters. Strsource 가 null 포인터 이거나 strsourcenull 포인터 (count가 0이 아닌 경우) 이거나 CountINT_MAX보다 큰 경우 매개 변수 유효성 검사 에 설명 된 대로 잘못 된 매개 변수 처리기가 호출 됩니다.If strSource is a null pointer, or strDest is a NULL pointer (unless count is zero), or if count is greater than INT_MAX, the invalid parameter handler is invoked, as described in Parameter Validation . 계속 해 서 실행 하도록 허용한 경우 이러한 함수는 errnoEINVAL 로 설정 하 고 INT_MAX을 반환 합니다.If execution is allowed to continue, these functions set errno to EINVAL and return INT_MAX.

기본적으로이 함수의 전역 상태는 응용 프로그램으로 범위가 지정 됩니다.By default, this function's global state is scoped to the application. 이를 변경 하려면 CRT의 전역 상태를 참조 하세요.To change this, see Global state in the CRT.

제네릭 텍스트 라우팅 매핑Generic-Text Routine Mappings

TCHAR.H 루틴TCHAR.H routine _UNICODE 및 _MBCS 정의되지 않음_UNICODE & _MBCS not defined _MBCS 정의됨_MBCS defined _UNICODE 정의됨_UNICODE defined
_tcsxfrm_tcsxfrm strxfrmstrxfrm strxfrmstrxfrm wcsxfrmwcsxfrm
_tcsxfrm_l_tcsxfrm_l _strxfrm_l_strxfrm_l _strxfrm_l_strxfrm_l _wcsxfrm_l_wcsxfrm_l

"C" 로캘에서 문자 집합(ASCII 문자 집합)의 순서는 사전적 문자 순서와 같습니다.In the "C" locale, the order of the characters in the character set (ASCII character set) is the same as the lexicographic order of the characters. 그러나 다른 로캘에서 문자 집합의 문자 순서는 사전적 문자 순서와 다를 수 있습니다.However, in other locales, the order of characters in the character set may differ from the lexicographic character order. 예를 들어 특정 유럽 로캘의 문자 집합에서 문자 'a'(값 0x61)는 문자 'ä'(값 0xE4) 앞에 오지만 사전적으로는 문자 'ä'가 'a' 앞에 옵니다.For example, in certain European locales, the character 'a' (value 0x61) precedes the character 'ä' (value 0xE4) in the character set, but the character 'ä' precedes the character 'a' lexicographically.

문자 집합과 사전적 문자 순서가 다른 로캘에서는 원래 문자열에서 strxfrm 를 사용한 다음 결과 문자열에 대해 strcmp 를 사용 하 여 현재 로캘의 LC_COLLATE 범주 설정에 따라 사전적 문자열 비교를 생성 합니다.In locales for which the character set and the lexicographic character order differ, use strxfrm on the original strings and then strcmp on the resulting strings to produce a lexicographic string comparison according to the current locale's LC_COLLATE category setting. 따라서 위의 로캘에서 사전순으로 두 문자열을 비교 하려면 원래 문자열에서 strxfrm 를 사용한 다음 결과 문자열에 strcmp 합니다.Thus, to compare two strings lexicographically in the above locale, use strxfrm on the original strings, then strcmp on the resulting strings. 또는 원래 문자열에 strcmp 대신 strcoll 를 사용할 수 있습니다.Alternately, you can use strcoll rather than strcmp on the original strings.

strxfrm 는 기본적으로 LCMAP_SORTKEY활성화 되었으며 lcmapstring 에 대 한 래퍼입니다.strxfrm is basically a wrapper around LCMapString with LCMAP_SORTKEY.

다음 식의 값은 원본 문자열의 strxfrm 변환을 유지 하는 데 필요한 배열의 크기입니다.The value of the following expression is the size of the array needed to hold the strxfrm transformation of the source string:

1 + strxfrm( NULL, string, 0 )

"C" 로캘에서만 strxfrm 는 다음과 같습니다.In the "C" locale only, strxfrm is equivalent to the following:

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

요구 사항Requirements

루틴에서 반환된 값Routine 필수 헤더Required header
strxfrmstrxfrm <string.h><string.h>
wcsxfrmwcsxfrm <string.h> 또는 <wchar.h><string.h> or <wchar.h>
_strxfrm_l_strxfrm_l <string.h><string.h>
_wcsxfrm_l_wcsxfrm_l <string.h> 또는 <wchar.h><string.h> or <wchar.h>

호환성에 대한 자세한 내용은 Compatibility을 참조하세요.For additional compatibility information, see Compatibility.

참조See also

데이터 변환Data Conversion
localeconvlocaleconv
setlocale, _wsetlocalesetlocale, _wsetlocale
LocaleLocale
문자열 조작String Manipulation
strcoll 함수strcoll Functions
strcmp, wcscmp, _mbscmpstrcmp, wcscmp, _mbscmp
strncmp, wcsncmp, _mbsncmp, _mbsncmp_lstrncmp, wcsncmp, _mbsncmp, _mbsncmp_l