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