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 :

Problème comparaison 2 strings


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Points : 58
    Points
    58
    Par défaut Problème comparaison 2 strings
    Bonsoir à tous,

    J'ai un soucis (encore ?) pour comparer 2 chaînes de caractères.

    En effet, j'ai rentré "en dur" dans une classe, un nom et via une autre méthode j'entre grâce à une saisie clavier (cin) un nom.
    Je veux comparer ces deux chaînes de caractères.

    J'ai essayé plusieurs méthodes de comparaison comme la méthode strcmp(chaine1 == chaine2) ou encore chaine1 == chaine2.

    Donc il est possible que mon code n'aille pas, ou bien que je m'y prenne mal pour les comparer...


    Pourriez-vous m'aider ?

    Je vous colle les petits morceaux de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    /* Classe Coordonnees */
     
    class Coordonnees
    {
        private:
                string nom;
                string prenom;
                string adresse;
                string num_tel;
     
        public:
                Coordonnees()
                {
                    nom = " ";
                    prenom = " ";
                    adresse = " ";
                    num_tel = " ";
                }
     
                void saisie(string n, string p, string a, string nt)
                {
                    nom = n;
                    prenom = p;
                    adresse = a;
                    num_tel = nt;
                }
     
                void saisie()
                {
                    cout << "Entrez le nom de votre contact : ";
                    cin >> nom;
                    cout << endl;
                    cout << "Entrez le prénom de votre contact : ";
                    cin >> prenom;
                    cout << endl;
                    cout << "Entrez son adresse : ";
                    cin >> adresse;
                    cout << endl;
                    cout << "Entrez son numéro de téléphone : ";
                    cin >> num_tel;
                    cout << endl;
                }
     
                void affichage()
                {
                    cout << "Votre contact est " << nom << " " << prenom << " il habite " << adresse << " et on peut le joindre au " << num_tel << endl;
                }
     
                string getNom()
                {
                    return nom;
                }
     
                string getPrenom()
                {
                    return prenom;
                }
     
                string getAdresse()
                {
                    return adresse;
                }
     
                string getNum()
                {
                    return num_tel;
                }
    };


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    /* Fonction recherche, comparaison des deux chaines */
     
    void recherche()
                {
                    int i, j;
                    string gnom;                string gprenom;
                    string n;
                    string p;
     
                    cout << "Entrez le prénom de la personne à rechercher : ";
                    cin >> p;
                    cout << "Entrez le nom de la personne à rechercher : ";
                    cin >> n;
     
                    for(i = 0; i < 26; i++)
                    {
                        for(j = 0; j < 10; j++)
                        {
                            gnom = coordonnees[i][j].getNom();
                            gprenom = coordonnees[i][j].getPrenom();
     
                            if(gnom == n)
                            {
                                if(gprenom == p)
                                {
                                    cout << "VROUM" << endl;
                                }
                            }
                        }
                    }
                }

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 Tyra3l Voir le message
    Bonsoir à tous,

    J'ai un soucis (encore ?) pour comparer 2 chaînes de caractères.
    Pour le coup, et vu la complexité de ton code, pourquoi est-ce que tu n'affiches pas les différentes comparaisons que tu fais (et puisque ce sont des std::string, tu dois utiliser chaine1 == chaine2) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    std::cout << "'" << n << "' == '" << gnom << "' ?" << std::endl;
    std::cout << "'" << p << "' == '" << gprenom << "' ?" << std::endl;
    if (n == gnom && p == gprenom)
    {
      std::cout << "gotcha!" << std::endl;
    }
    Tu verras bien ce qui se passe, non ? (pense à délimiter de manière claire les chaine ; dans mon code, j'ai mis des ', histoire de voir à l'affichage ce qui se passe. Pour info, si tu fait cin >> s et que tu ne rentres que des espaces, il y a de forte chance pour que s.length() == 0 à la fin).
    [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.

  3. #3
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Salut

    Ce morceau de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include <iostream>
    #include <string>
     
    int main()
    {
    	std::string valeur1 = "SalutMec";
    	std::string valeur2;
    	std::cout << "Entrez une valeur:";
    	std::cin >> valeur2;
    	if( valeur1 == valeur2)
    		std::cout << "Chaînes égales." << std::endl;
    	else
    		std::cout << "Chaînes différentes." << std::endl;
     
    	return 0;
    }
    Tourne parfaitement. Ton problème doit se situer ailleurs !

    Note: std::string::compare (comme strcmp mais c'est du C) renvoie 0 quand les chaînes sont identiques.
    Find me on github

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Points : 58
    Points
    58
    Par défaut
    Bonsoir,

    en fait j'ai été un gros boulet, en effet lors de la première saisie je demandais le prénom et ensuite le nom, et moi je renseignais le nom puis le prénom.

    Donc très normalement cela ne fonctionnait pas...

    Merci encore de vous etre penchés sur mon problème !

    A bientot

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

Discussions similaires

  1. Problème script bash (comparaison de string)
    Par nicoo04 dans le forum Linux
    Réponses: 2
    Dernier message: 26/01/2011, 22h23
  2. Réponses: 3
    Dernier message: 03/03/2008, 10h30
  3. Réponses: 1
    Dernier message: 24/12/2005, 14h18
  4. problème comparaison de date VB
    Par af_airone dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 20/10/2005, 11h18
  5. [C#] Erreur comparaison de string
    Par Damsou dans le forum ASP.NET
    Réponses: 13
    Dernier message: 11/02/2005, 11h14

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