IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Utilisation des chaines unicodes


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 217
    Par défaut Utilisation des chaines unicodes
    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";

  2. #2
    Membre chevronné Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Par défaut
    Citation Envoyé par _Michel Voir le message
    Bonjour,
    quelqu'un sait comment utiliser les chaînes unicodes comme on le fait des chaines ASCII ainsi ?:
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wchar_t chaine[] = L"123";
    Il y a des fonctions spéciales pour traiter ces chaînes-là déclarées dans wchar.h et aussi dans stdlib.h.

  3. #3
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    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.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 217
    Par défaut
    Citation Envoyé par dapounet Voir le message
    Il faut utiliser strcpy() ou strncpy() pour copier comme ça une chaîne de caractères d'un byte.
    Pourquoi, ça ralenti l'execution du programme, non?

  5. #5
    Membre chevronné Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Par défaut
    Citation Envoyé par _Michel Voir le message
    Pourquoi, ça ralenti l'execution du programme, non?
    Je pensais que tu parlais de ce genre de chose qui n'existe pas en C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char chaine[4];
    chaine = "123";
    À 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char chaine[] = "pouet";
    char const *p_chaine = "prout";
    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.
    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.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 217
    Par défaut
    Oui, ok.

  7. #7
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Citation Envoyé par dapounet Voir le message
    Pour l'initialisation d'une chaîne multibytes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wchar_t chaine[] = L"123";
    ça prête à confusion, appele ça plutôt une chaîne de caractère large qui est différente d'une chaine de caractère multibyte.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/02/2015, 21h48
  2. Réponses: 6
    Dernier message: 03/07/2010, 01h41
  3. Utilisation des chaine de caractéres String
    Par menzlitsh dans le forum Langage
    Réponses: 3
    Dernier message: 17/08/2007, 13h19
  4. [Debutant] Afficher des chaines unicodes avec println
    Par MichaelB dans le forum Langage
    Réponses: 2
    Dernier message: 10/01/2007, 19h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo