Compartir por


strxfrm, wcsxfrm, , _strxfrm_l, _wcsxfrm_l

Transforma una cadena en función de la información específica de la configuración regional.

Sintaxis

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ámetros

strDest
Cadena de destino.

strSource
Cadena de origen.

count
Número máximo de caracteres que se van a colocar en strDest.

locale
Configuración regional que se va a usar.

Valor devuelto

Devuelve la longitud de la cadena transformada, sin contar el carácter nulo de terminación. Si el valor devuelto es mayor o igual a count, el contenido de strDest es imprevisible. Si se produce un error, cada función establece errno y devuelve INT_MAX. Para un carácter no válido, errno se establece en EILSEQ.

Comentarios

La función strxfrm transforma la cadena señalada por strSource en un nuevo formulario intercalado que se almacena en strDest. En la cadena resultante no se transforman ni colocan más de count caracteres (incluido el carácter nulo). La transformación se efectúa con el valor de la categoría LC_COLLATE de la configuración regional. Para más información sobre LC_COLLATE, consulte setlocale. strxfrm usa la configuración regional actual para el 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 usar la configuración regional actual. Para obtener más información, vea Locale.

Después de la transformación, una llamada a strcmp con las dos cadenas transformadas produce resultados idénticos a los resultados de una llamada a aplicada a strcoll las dos cadenas originales. Al igual que con strcoll y stricoll, strxfrm controla automáticamente las cadenas de caracteres multibyte según corresponda.

wcsxfrm es una versión con caracteres anchos de strxfrm; los argumentos de cadena de wcsxfrm son punteros con caracteres anchos. Para wcsxfrm, después de la transformación de cadena, una llamada a wcscmp con las dos cadenas transformadas produce resultados idénticos a los resultados de una llamada a aplicada a wcscoll las dos cadenas originales. Por lo demás,wcsxfrm y strxfrm se comportan de forma idéntica. wcsxfrm usa la configuración regional actual para el comportamiento dependiente de la configuración regional; _wcsxfrm_l usa la configuración regional que se pasa en lugar de usar la configuración regional actual.

Estas funciones validan sus parámetros. Si strSource es un puntero nulo o strDest es un NULL puntero (a menos que count sea cero), o si count es mayor que INT_MAX, se invoca el controlador de parámetros no válidos, como se describe en Validación de parámetros . Si la ejecución puede continuar, estas funciones establecen errno en EINVAL y devuelven INT_MAX.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Asignaciones de rutinas de texto genérico

Rutina TCHAR.H _UNICODE y _MBCS no definidos _MBCS definido _UNICODE definido
_tcsxfrm strxfrm strxfrm wcsxfrm
_tcsxfrm_l _strxfrm_l _strxfrm_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. Sin embargo, en otras configuraciones regionales, el orden de los caracteres del juego de caracteres puede diferir del orden lexicográfico de los caracteres. 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.

En las configuraciones regionales en las que el juego de caracteres y el orden de los caracteres lexicográficos son distintos, use strxfrm en las cadenas originales y strcmp en las cadenas resultantes para generar una comparación de cadenas lexicográfica de acuerdo con el valor de la categoría LC_COLLATE de la configuración regional actual. Por lo tanto, para comparar dos cadenas de manera lexicográfica en la configuración regional anterior, use strxfrm en las cadenas originales y, luego, strcmp en las cadenas resultantes. Como alternativa, puede usar strcoll en lugar de strcmp en las cadenas originales.

strxfrm es básicamente un contenedor alrededor LCMapString de con LCMAP_SORTKEY.

El valor de la siguiente expresión es el tamaño de la matriz necesario para albergar la transformación strxfrm de la cadena de origen:

1 + strxfrm( NULL, string, 0 )

Solo en la configuración strxfrm regional "C", equivale a las siguientes llamadas de función:

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

Requisitos

Routine Encabezado necesario
strxfrm <string.h>
wcsxfrm <string.h> o <wchar.h>
_strxfrm_l <string.h>
_wcsxfrm_l <string.h> o <wchar.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Consulte también

Conversión de datos
localeconv
setlocale, _wsetlocale
Configuración regional
Manipulación de cadenas
Funciones strcoll
strcmp, , wcscmp, _mbscmp
strncmp, wcsncmp, , _mbsncmp, _mbsncmp_l