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 :

tester string == ou != ou autres écritures


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Points : 0
    Points
    0
    Par défaut tester string == ou != ou autres écritures
    bonjour à tous,
    Tout est dans le titre!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    string chn;
    if (chn == "3" )
    {cout<<"3 est bien accepté"<<endl;)}
     
    if (chn = !"3" )//ici la condition entre parenthèse est refusée
    {cout<<"n'est pas accepté"<<endl;}
    //dois-je passer par else?
    Le 2e if est refusé.
    Dois-je passer par else?

    Sen.
    p.s.:je modifierai le titre ultérieurement
    Cordialement.
    Sen.

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 254
    Points : 538
    Points
    538
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    string chn;
    if (chn == "3")
       cout<<"3 est bien accepté"<<endl;
    else
       cout<<"n'est pas accepté"<<endl;
    sinon pour faire un négation dans un if c'est de la façon suivante:
    "L'insanité consiste à répéter la même action dans l'espoir d'aboutir à un résultat différent" Albert Einstein
    ----------------------
    T.O.A.O 6-MarViN

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par senvedgi Voir le message
    bonjour à tous,
    Tout est dans le titre!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    string chn;
    if (chn == "3" )
    {cout<<"3 est bien accepté"<<endl;)}
     
    if (chn = !"3" )//ici la condition entre parenthèse est refusée
    {cout<<"n'est pas accepté"<<endl;}
    //dois-je passer par else?
    Le 2e if est refusé.
    Dois-je passer par else?

    Sen.
    p.s.:je modifierai le titre ultérieurement
    chn = !3 ?

    chn != 3 serait à coup sûr plus juste

    chn = !3 signifie que chn prend la valeur !3, qui est 0 puisque 3 est différent de 0. Et puisque chn est 0, la condition (chn) est fausse et le code dans le if n'est pas exécuté.

    Pour faire plus propre ,utilise else:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (chn == 3) {
    ...
    } else {
    ...
    }
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  4. #4
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Bonjour

    if(chn =! "3") est-ce possible?
    Si le compilateur l'accepte, c'est autorisé... par contre, ça ne fait pas ce que tu penses.

    C'est équivalent à :
    avec = (opérateur d'affectation) et ! (NON logique, ce qui donne je sais pas quoi sur une chaîne de caractères).

    Ce que tu voulais écrire, c'est probablement :
    Dois-je passer par else?
    C'est quand même fait pour, non ?

    EDIT : plusieurs à avoir répondu en même temps

  5. #5
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    EDIT : plusieurs à avoir répondu en même temps
    En effet, 3 réponses en 3 mins !!! C'est pas mal !!!

    Remarque bête :
    Perso j'aurais fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(chn.compare("3") == 0))
    Est-ce du "mauvais" C++, est-ce dû à ma plus forte expérience en C ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 254
    Points : 538
    Points
    538
    Par défaut
    Au contraire tu utilise une fonction membre de la classe string. C'est du bon petit C++ bien comme il faut.
    "L'insanité consiste à répéter la même action dans l'espoir d'aboutir à un résultat différent" Albert Einstein
    ----------------------
    T.O.A.O 6-MarViN

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Points : 0
    Points
    0
    Par défaut
    Mémoire mauvaise:j'avais inversé les signes!
    Merci à tous.Merci pour la variété des réponses.
    Merci pour la rapidité.Tirs groupés.
    Cordialement.
    Sen.

  8. #8
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par fregolo52 Voir le message
    Perso j'aurais fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(chn.compare("3") == 0))
    Est-ce du "mauvais" C++, est-ce dû à ma plus forte expérience en C ?
    Sans être du mauvais C++, ce n'est pas la solution que je choisirais (sauf s'il s'agit de s'interfacer avec un algo en C qui attend un résultat en -x, 0, x). Pourquoi ? C'est plus long à écrire, ça ne dit pas aussi clairement que l'on veut tester l'égalité, il y a plus de risque d'erreur (if(chn.compare("3")) : Est-ce une erreur ou est-ce voulu ?), ce n'est pas symétrique comme écriture, alors que l'égalité est fondamentalement symétrique, c'est spécifique à un seul type, alors que == marche dans plus de cas, ce qui pourait avoir un intérêt pour rendre le code générique (même si dans ce cas utiliser uniquement < pourraît être un choix intéressant aussi).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2006
    Messages : 286
    Points : 0
    Points
    0
    Par défaut
    Avec mon expérience ailleurs(sauf c++..) concision,simplicité,universalité sont les 3 mamelles de l'écriture informatique en général.
    Salut à tous:je reviendrai hélas mais grâce à vous mon travail avançe.
    (Pour info:une(des) fonction(s) comportent des menus numérotés mais certains numéros(labels!!!) sont néfastes selon le lieu d'emploi de(s) le(es) fonctions.Donc je les masque.)
    Merci(s).
    Cordialement.
    Sen.

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

Discussions similaires

  1. [Couper un String]par un autre String
    Par Terminator dans le forum Langage
    Réponses: 5
    Dernier message: 28/04/2006, 07h45
  2. Tester existence d'une autre BDD Access
    Par bozolozo dans le forum Access
    Réponses: 3
    Dernier message: 26/04/2006, 14h54
  3. Réponses: 2
    Dernier message: 17/03/2006, 19h30
  4. [Info]Créer un tableau de String à partir d'autres String
    Par Nasky dans le forum Collection et Stream
    Réponses: 21
    Dernier message: 06/07/2005, 11h46
  5. Réponses: 12
    Dernier message: 27/06/2005, 19h06

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