Bonjour,
quelqu'un sait comment utiliser les chaînes unicodes comme on le fait des chaines ASCII ainsi ?:
str = "str";
J'imagine qu'on peut le faire de sette façon, mais ce n'est possible qu'à l'initialisation :
short *str = "str";
Version imprimable
Bonjour,
quelqu'un sait comment utiliser les chaînes unicodes comme on le fait des chaines ASCII ainsi ?:
str = "str";
J'imagine qu'on peut le faire de sette façon, mais ce n'est possible qu'à l'initialisation :
short *str = "str";
Il faut utiliser strcpy() ou strncpy() pour copier comme ça une chaîne de caractères d'un byte.
Pour l'initialisation d'une chaîne multibytes :
Il y a des fonctions spéciales pour traiter ces chaînes-là déclarées dans wchar.h et aussi dans stdlib.h.Code:wchar_t chaine[] = L"123";
En C il n'y a pas de caractères unicode mais de caractères larges (... qui peuvent contenir des caractères unicode). Et de la même manière le C n'a rien à voir avec le jeu de caractères ASCII ou ANSI (qui est dérivé de ASCII). Le suffixe L devant un caractère ou une chaîne de caractères indique au compilateur qu'on utilise des caractères larges (wchar_t au lieu de char). Puisque char et wchar_t sont deux types à priori différents, il y a des fonctions qui prennent en argument des chaînes à base de char et d'autres des chaînes à base de wchar_t. Par exemple printf - wprintf, strcpy - wcscpy, etc.
Je pensais que tu parlais de ce genre de chose qui n'existe pas en C :
À moins que ta chaîne soit globale je ne vois pas comment on peut l'initialiser autrement qu'en copiant les octets les uns après les autres, la seule différence dans les cas comme ça :Code:
1
2 char chaine[4]; chaine = "123";
c'est que le compilateur s'en chargera pour toi (mais c'est vrai que ce sera un peu plus rapide qu'appeler une fonction pour s'en charger). Dans les autres cas tu es obligé d'utiliser une fonction comme strncpy(), le langage C lui-même ne fournit rien pour automatiser les copies de chaînes/tableaux.Code:
1
2 char chaine[] = "pouet"; char const *p_chaine = "prout";
Pour ce qui est de la vitesse d'exécution il vaut mieux ne rien présager à moins d'avoir mesuré qu'un algorithme est très complexe ou qu'une fonction est appelée très souvent.
Oui, ok.