wcsxfrm
|
Défini dans l'en-tête
<wchar.h>
|
||
|
(jusqu'à C99)
(depuis C95) |
||
| (depuis C99) | ||
Transforme la chaîne large terminée par un zéro pointée par
src
dans la forme définie par l'implémentation de telle sorte que la comparaison de deux chaînes transformées avec
wcscmp
donne le même résultat que la comparaison des chaînes originales avec
wcscoll
, dans les paramètres régionaux C actuels.
Les premiers
count
caractères de la chaîne transformée sont écrits dans la destination, y compris le caractère nul de fin, et la longueur de la chaîne transformée complète est renvoyée, à l'exclusion du caractère nul de fin.
Si
count
est
0
, alors
dest
peut être un pointeur nul.
Table des matières |
Notes
La longueur correcte du tampon qui peut recevoir la chaîne transformée entière est 1 + wcsxfrm ( NULL , src, 0 )
Cette fonction est utilisée lors de multiples comparaisons dépendantes des paramètres régionaux utilisant la même chaîne large ou le même ensemble de chaînes larges, car il est plus efficace d'utiliser
wcsxfrm
pour transformer toutes les chaînes une seule fois, puis de comparer les chaînes larges transformées avec
wcscmp
.
Paramètres
| dest | - | pointeur vers le premier élément d'une chaîne large terminée par un caractère nul pour écrire la chaîne transformée |
| src | - | pointeur vers la chaîne de caractères large terminée par un caractère nul à transformer |
| count | - | nombre maximum de caractères à produire |
Valeur de retour
La longueur de la chaîne large transformée, sans inclure le caractère nul de fin.
Exemple
#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); }
Sortie :
In the Swedish locale: år before ängel In lexicographical comparison: ängel before år
Références
- Norme C11 (ISO/CEI 9899:2011) :
-
- 7.29.4.4.4 La fonction wcsxfrm (p: 434-435)
- Norme C99 (ISO/CEI 9899:1999) :
-
- 7.24.4.4.4 La fonction wcsxfrm (p: 380-381)
Voir aussi
|
compare deux chaînes selon les paramètres régionaux actuels
(fonction) |
|
|
(C95)
|
compare deux chaînes larges selon les paramètres régionaux actuels
(fonction) |
|
(C95)
|
compare deux chaînes larges
(fonction) |
|
transforme une chaîne pour que strcmp produise le même résultat que strcoll
(fonction) |
|
|
Documentation C++
pour
wcsxfrm
|
|