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

Transforma una cadena en función de la información específica de la configuración regional.Transform a string based on locale-specific information.

SintaxisSyntax

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

ParámetrosParameters

strDeststrDest
Cadena de destino.Destination string.

strSourcestrSource
Cadena de origen.Source string.

countcount
Número máximo de caracteres que se colocarán en strDest.Maximum number of characters to place in strDest.

localelocale
Configuración regional que se va a usar.The locale to use.

Valor devueltoReturn Value

Devuelve la longitud de la cadena transformada, sin contar el carácter nulo de terminación.Returns the length of the transformed string, not counting the terminating null character. Si el valor devuelto es mayor o igual que Count, el contenido de strDest es imprevisible.If the return value is greater than or equal to count, the content of strDest is unpredictable. En un error, cada función establece errno y devuelve INT_MAX.On an error, each function sets errno and returns INT_MAX. Para un carácter no válido, errno se establece en EILSEQ.For an invalid character, errno is set to EILSEQ.

ObservacionesRemarks

La función strxfrm transforma la cadena a la que apunta strSource en un nuevo formulario intercalado que se almacena en strDest.The strxfrm function transforms the string pointed to by strSource into a new collated form that is stored in strDest. No se transforman los caracteres de recuento , incluido el carácter nulo, y se colocan en la cadena resultante.No more than count characters, including the null character, are transformed and placed into the resulting string. La transformación se realiza mediante la configuración de la categoría LC_COLLATE de la configuración regional.The transformation is made using the locale's LC_COLLATE category setting. Para obtener más información sobre LC_COLLATE, vea setlocale.For more information on LC_COLLATE, see setlocale. strxfrm usa la configuración regional actual para su comportamiento dependiente de la configuración regional; _strxfrm_l es idéntico, salvo que usa la configuración regional que se pasa en lugar de la configuración regional actual.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. Para obtener más información, vea Locale.For more information, see Locale.

Después de la transformación, una llamada a strcmp con las dos cadenas transformadas produce resultados idénticos a los de una llamada a strcoll ( aplicada a las dos cadenas originales.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. Como con strcoll ( y stricoll, strxfrm controla automáticamente las cadenas de caracteres multibyte según corresponda.As with strcoll and stricoll, strxfrm automatically handles multibyte-character strings as appropriate.

wcsxfrm es una versión con caracteres anchos de strxfrm; los argumentos de cadena de wcsxfrm son punteros de caracteres anchos.wcsxfrm is a wide-character version of strxfrm; the string arguments of wcsxfrm are wide-character pointers. En el caso de wcsxfrm, después de la transformación de cadena, una llamada a wcscmp con las dos cadenas transformadas produce resultados idénticos a los de una llamada a wcscoll aplicada a las dos cadenas originales.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. wcsxfrm y strxfrm se comportan de manera idéntica.wcsxfrm and strxfrm behave identically otherwise. wcsxfrm usa la configuración regional actual para su comportamiento dependiente de la configuración regional; _wcsxfrm_l usa la configuración regional que se pasa en lugar de la configuración regional actual.wcsxfrm uses the current locale for its locale-dependent behavior; _wcsxfrm_l uses the locale passed in instead of the current locale.

Estas funciones validan sus parámetros.These functions validate their parameters. Si strSource es un puntero nulo, o strDest es un puntero nulo (a menos que Count sea cero), o si Count es mayor que INT_MAX, se invoca el controlador de parámetros no válidos, tal y como se describe en validación de parámetros .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 . Si la ejecución puede continuar, estas funciones establecen errno en EINVAL y devuelven INT_MAX.If execution is allowed to continue, these functions set errno to EINVAL and return INT_MAX.

De forma predeterminada, el ámbito de este estado global de esta función es la aplicación.By default, this function's global state is scoped to the application. Para cambiar esto, vea estado global en CRT.To change this, see Global state in the CRT.

Asignaciones de rutina de texto genéricoGeneric-Text Routine Mappings

Rutina TCHAR.HTCHAR.H routine _UNICODE y _MBCS no definidos_UNICODE & _MBCS not defined _MBCS definido_MBCS defined _UNICODE definido_UNICODE defined
_tcsxfrm_tcsxfrm strxfrmstrxfrm strxfrmstrxfrm wcsxfrmwcsxfrm
_tcsxfrm_l_tcsxfrm_l _strxfrm_l_strxfrm_l _strxfrm_l_strxfrm_l _wcsxfrm_l_wcsxfrm_l

En la configuración regional "C", el orden de los caracteres del juego de caracteres (juego de caracteres ASCII) es el mismo que el orden lexicográfico de los caracteres.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. Sin embargo, en otras configuraciones regionales, el orden de los caracteres del juego de caracteres puede diferir del orden lexicográfico de los caracteres.However, in other locales, the order of characters in the character set may differ from the lexicographic character order. Por ejemplo, en determinadas configuraciones regionales europeas, el carácter "a" (valor 0x61) precede al carácter "ä". (valor 0xE4) en el juego de caracteres, pero el carácter ' ä ' precede al carácter ' a ' lexicográficamente.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.

En las configuraciones regionales para las que el conjunto de caracteres y el orden de los caracteres lexicográfico difieren, use strxfrm en las cadenas originales y después strcmp en las cadenas resultantes para generar una comparación de cadena de lexicográfico según la configuración de la categoría LC_COLLATE de la configuración regional actual.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. Por lo tanto, para comparar dos cadenas lexicográficamente en la configuración regional anterior, use strxfrm en las cadenas originales y después strcmp en las cadenas resultantes.Thus, to compare two strings lexicographically in the above locale, use strxfrm on the original strings, then strcmp on the resulting strings. Como alternativa, puede usar strcoll ( en lugar de strcmp en las cadenas originales.Alternately, you can use strcoll rather than strcmp on the original strings.

strxfrm es básicamente un contenedor alrededor de LCMapString con LCMAP_SORTKEY.strxfrm is basically a wrapper around LCMapString with LCMAP_SORTKEY.

El valor de la siguiente expresión es el tamaño de la matriz necesaria para contener la transformación strxfrm de la cadena de origen: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 )

En la configuración regional de "C", strxfrm es equivalente a lo siguiente:In the "C" locale only, strxfrm is equivalent to the following:

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

RequisitosRequirements

RutinaRoutine Encabezado necesarioRequired header
strxfrmstrxfrm <string.h><string.h>
wcsxfrmwcsxfrm <string.h> o <wchar.h><string.h> or <wchar.h>
_strxfrm_l_strxfrm_l <string.h><string.h>
_wcsxfrm_l_wcsxfrm_l <string.h> o <wchar.h><string.h> or <wchar.h>

Para obtener información adicional sobre compatibilidad, consulte Compatibilidad.For additional compatibility information, see Compatibility.

Consulta tambiénSee also

Conversión de datosData Conversion
localeconvlocaleconv
setlocale, _wsetlocalesetlocale, _wsetlocale
LocaleLocale
Manipulación de cadenasString Manipulation
Funciones de strcoll (strcoll Functions
strcmp, wcscmp, _mbscmpstrcmp, wcscmp, _mbscmp
strncmp, wcsncmp, _mbsncmp, _mbsncmp_lstrncmp, wcsncmp, _mbsncmp, _mbsncmp_l