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 :

Map et clef accentuées


Sujet :

C++

  1. #1
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 87
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Février 2006
    Messages : 30
    Par défaut Map et clef accentuées
    Dans une std::Map qui contient en clé un mot et une chaine associée, j'ai des problèmes avec les clés contenant un mot accentué.

    La Map est chargée correctement dans l'ordre alphabétique, mais à la lecture tout se passe comme si find ( clé ) utilisait un ordre différend. Il ne trouve pas la clé, uniquement dans le cas où celle-ci est accentuée.

    J'utilise un const_iterator, mais pas l'opérateur [] inapplicable dans ce cas.

    Quelqun a-t-il une idée, une piste de recherche... les foncteurs peut-être, mais cela me parait bien compliqué.


    PS : wxDevcpp sous XP.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    La clé est bien entrée de la même manière dans l'ajout et dans la recherche ?
    (Ex: Les deux saisies par l'utilisateur dans la console, ou les deux à partir d'un fichier, etc.).

    N'oublie pas que la console n'utilise pas le même encodage que le reste sous Windows...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 87
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Février 2006
    Messages : 30
    Par défaut
    La Map est remplie à partir d'un fichier au moyen de getline().
    Son affichage montre qu'elle est correctement remplie et ordonnée.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Et la clée à rechercher est obtenue comment ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 87
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Février 2006
    Messages : 30
    Par défaut
    Les clés à rechercher sont des mots de la langue française faisant partie d'un fichier texte (un livre).

    Par ailleurs il est possible que la clé soit mal transmise dans l'appel du sp de lecture de la Map. J'essaye de lever le doute.

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Regarde si c'est bien le même charset.

  7. #7
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 87
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Février 2006
    Messages : 30
    Par défaut
    J'ai toujours utilisé le jeu de caractères par défaut dans tous les pgm de mon application et jusqu'ici les lettres accentuées ne m'ont pas posé de problème.

  8. #8
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 87
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Février 2006
    Messages : 30
    Par défaut
    Merci à tous les deux.

    J'ai trouvé mon erreur : en enlevant les caractères non alphabétiques qui suivent la clé (ponctuation), j'enlevais mon 'é' final qui n'est pas considéré comme caractère alphabétique par le fonction ISALFA(). La clé passée à la Map était donc incorrecte!

  9. #9
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Heu... c'est peut être bien le probleme, l'utilisation de la locale par défaut !

    IsAlpha() sont des fonctions de locale, et par défaut, en C, la locale est US... Donc IsAlpha() ne marche que pour des caractères non spéciaux (aucun autre que a-zA-Z quoi ! )

    Tu peux utiliser de l'unicode pour tester si un caractère est de la ponctuation ou non, ou encore, spécifier au runtime, quelle locale il doit utiliser.

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

Discussions similaires

  1. Map et clef sous forme de paire
    Par BakaOnigiri dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 05/08/2008, 15h47
  2. [Création Map clef / valeur]
    Par newbies-java dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 04/09/2007, 09h37
  3. Clefs composees +mapping 3 tables
    Par willoi dans le forum Hibernate
    Réponses: 9
    Dernier message: 13/03/2007, 13h22
  4. Réponses: 3
    Dernier message: 20/01/2007, 19h09
  5. Réponses: 4
    Dernier message: 08/03/2006, 13h22

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