wcsxfrm
|
Definido en el encabezado
<wchar.h>
|
||
|
(hasta C99)
(desde C95) |
||
| (desde C99) | ||
Transforma la cadena ancha terminada en nulo apuntada por
src
a la forma definida por la implementación de manera que comparar dos cadenas transformadas con
wcscmp
produce el mismo resultado que comparar las cadenas originales con
wcscoll
, en la configuración regional C actual.
Los primeros
count
caracteres de la cadena transformada se escriben en el destino, incluyendo el carácter nulo terminador, y se devuelve la longitud de la cadena transformada completa, excluyendo el carácter nulo terminador.
Si
count
es
0
, entonces
dest
puede ser un puntero nulo.
Contenidos |
Notas
La longitud correcta del búfer que puede recibir toda la cadena transformada es 1 + wcsxfrm ( NULL , src, 0 )
Esta función se utiliza cuando se realizan múltiples comparaciones dependientes de la configuración regional utilizando la misma cadena ancha o conjunto de cadenas anchas, porque es más eficiente usar
wcsxfrm
para transformar todas las cadenas una sola vez, y posteriormente comparar las cadenas anchas transformadas con
wcscmp
.
Parámetros
| dest | - | puntero al primer elemento de una cadena ancha terminada en nulo donde escribir la cadena transformada |
| src | - | puntero a la cadena de caracteres anchos terminada en nulo que se va a transformar |
| count | - | número máximo de caracteres a generar |
Valor de retorno
La longitud de la cadena ancha transformada, sin incluir el carácter nulo de terminación.
Ejemplo
#include <stdio.h> #include <wchar.h> #include <locale.h> int main(void) { setlocale(LC_ALL, "sv_SE.utf8"); const wchar_t *in1 = L"\u00e5r"; wchar_t out1[1+wcsxfrm(NULL, in1, 0)]; wcsxfrm(out1, in1, sizeof out1/sizeof *out1); const wchar_t *in2 = L"\u00e4ngel"; wchar_t out2[1+wcsxfrm(NULL, in2, 0)]; wcsxfrm(out2, in2, sizeof out2/sizeof *out2); printf("In the Swedish locale: "); if(wcscmp(out1, out2) < 0) printf("%ls before %ls\n", in1, in2); else printf("%ls before %ls\n", in2, in1); printf("In lexicographical comparison: "); if(wcscmp(in1, in2) < 0) printf("%ls before %ls\n", in1, in2); else printf("%ls before %ls\n", in2, in1); }
Salida:
In the Swedish locale: år before ängel In lexicographical comparison: ängel before år
Referencias
- Estándar C11 (ISO/IEC 9899:2011):
-
- 7.29.4.4.4 La función wcsxfrm (p: 434-435)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 7.24.4.4.4 La función wcsxfrm (p: 380-381)
Véase también
|
compara dos cadenas de acuerdo a la configuración regional actual
(función) |
|
|
(C95)
|
compara dos cadenas anchas de acuerdo a la configuración regional actual
(función) |
|
(C95)
|
compara dos cadenas anchas
(función) |
|
transforma una cadena para que strcmp produzca el mismo resultado que strcoll
(función) |
|
|
Documentación de C++
para
wcsxfrm
|
|