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

MFC Discussion :

[MFC] Vérifier qu'une CString ne contient que de l'hexa?


Sujet :

MFC

  1. #1
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut [MFC] Vérifier qu'une CString ne contient que de l'hexa?
    Bonjour à tous,

    tout est dans le titre, enfin presque
    Car en effet, je pourrais faire une fonction qui vérifie chaque caratère de ma CString un par un et qui teste si c'est compris entre 0 et 9 et entre A et F, mais je préfèrerais un fonction de la MFC, ou pourquoi pas, de la std.

    Une idée?

    Merci.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    ca serait pourtant si simple de faire un parcours de chaine ...
    sinon, tu peux peut-etre faire une conversion en entier, et puis reconvertir en chaine et comparer à l'origine ... mais bon, ca me parait bien compliqué pour rien
    Sinon, je ne connais pas de fonction de l'API qui permettent de savoir si une chaine représente un nombre en hexa

  3. #3
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    ok merci

    bon ben je vais rester avec ma fonction qui parcoure la chaîne :/ .
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Pour ce genre de tests, on passe généralement par des expressions régulières. Dans ce cas c'est peut être pas la peine.
    Avec std::string, tu pourrais utiliser find_first_not_of:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    bool is_hexa( const std::string & s )
    {
        return s.find_first_not_of( "0123456789abcdefABCDEF" ) == std::string::npos;
    }

  5. #5
    Membre régulier
    Avatar de Alice9
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2004
    Messages : 124
    Points : 85
    Points
    85
    Par défaut
    tu peux aussi passer par une vérification de ta chaîne avec des regex :

    -> regex à comparer pour de l'hexa décimal : ^[0-9ABCDEFGHabcdefgh]

    va voir le tutoriel, c'est bien fait et tu devrais vite t'en sortir :
    http://nicolasj.developpez.com/articles/regex/



    Alice
    Alice

    A coeur vaillant, rien d'impossible !

  6. #6
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    merci pour tout.

    Je vais tester un peu tout ce que vous proposez, et je verrais.
    encore

    r0d.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Points : 66
    Points
    66
    Par défaut
    et aussi la fonction :


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

Discussions similaires

  1. Vérifier qu'une variable ne contient QUE des chiffres ?
    Par Zebulon777 dans le forum Général JavaScript
    Réponses: 26
    Dernier message: 30/09/2010, 12h47
  2. [MFC] Formatage avec une CString
    Par Denn's dans le forum MFC
    Réponses: 2
    Dernier message: 24/05/2007, 10h03
  3. Réponses: 4
    Dernier message: 20/02/2006, 00h33
  4. [string] vérifier si une string en contient une autre
    Par vasilov dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/12/2005, 14h50
  5. Réponses: 4
    Dernier message: 04/03/2005, 11h56

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