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 :

comportement étrange d'un test


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Par défaut comportement étrange d'un test
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (a == b && aa != bb)
    ne fonctionne pas!
    a est une partie de b est une partie de A)B)C)ou a et b sont testés sur les 4 premiers caractères.
    A et B sont acceptés:aa#bb
    A et C aussi!:aa==bb!
    Où est l'erreur?
    Merci pour vos expertises.

  2. #2
    Membre chevronné
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Par défaut
    Bonjour,
    Désolée mais je ne comprend pas du tout la question. Pourrais tu expliciter un peu plus ton problème, et peut-être nous envoyer un morceau de code un peu plus parlant?
    Merci

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Cia,

    Ce n'est pas ainsi qu'on compare des chaînes de caractères.

    Je te laisse chercher un peu, vu que c'est basique.

  4. #4
    Membre très actif
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Par défaut
    bonjour,
    1)Je m'aperçois que le test fonctionne(la "logique" est une chose imparable!).
    Mais c'est la sélection de la chaine à tester qui n'est pas bonne!
    C'est déjà çà!
    2)de droggo:comment compare-t-on donc des chaines?
    a == b ou a != b c'est donc trop simple?
    Quelle(s) autre(s) solution(s)?
    A+++.

  5. #5
    Membre éprouvé Avatar de Xtrem_Voyageur
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2009
    Messages : 85
    Par défaut
    Jettes un oeil à string::compare, cela sera plus propre.
    (compare te retourne 0 si les 2 morceaux de chaîne sont identiques)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    std::string s1("2012.ABC");
    std::string s2("2012.XYZ");
     
    /* Voici comment traduire ton if */
    if(s1.compare(0,4,s2,0,4)==0  && s1.compare(5,std::string::npos,s2,5,std::string::npos)!=0)
    /* ou de manière équivalente */
    if(!s1.compare(0,4,s2,0,4) && s1.compare(5,std::string::npos,s2,5,std::string::npos))

  6. #6
    Membre très actif
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Par défaut
    Merci/Bonjour,
    Oui c'est propre.
    J'avais trouvé cette écriture mais elle me paraît(paraissait)compliquée en "compar"aison des classiques == ou !=.Je ne l'avais pas retenu.
    Je ne suis pas un puriste mais string::compare doit être une fonction ou un mot-clef écrits par les concepteurs du C/C++,écriture qui doit contenir les conditions classiques comme ==,!=,<=,..etc avec des possibilités étendues ou puissantes les codes étant masqués pour le plus commun des mortels que je suis.
    Je retiens cette écriture quand même.
    Mais question:pourquoi c'est mieux?
    A+++

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/02/2008, 08h32
  2. Comportement étrange apres une désinstallation
    Par Sunchaser dans le forum Excel
    Réponses: 4
    Dernier message: 06/08/2005, 19h44
  3. comportement étrange d'une jointure ...
    Par amenis dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 10/02/2005, 21h27
  4. [Système][Runtime][Exec] Comportement étrange au lancement de BeSweet
    Par divxdede dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 06/06/2004, 09h54
  5. Réponses: 2
    Dernier message: 22/09/2003, 11h23

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