En c++

Bonjour,

en faite j'ai un souci de comparaison de chaine de caractères en c++
voilà j'ai la chaine de caractère "PARIS" que je dois comparer à une liste de 19 villes qui pour certaines comporte "paris", et ces villes sont: "MARSEILLE", "PARIS", "LYON", "TOULOUSE", " NICE", "STRASBOURG", "NANTES", "MONTPELLIER", "BORDEAUX", "RENNES", "SEYSSINET PARISET", "DAMPARIS", "LE TOUQUET PARIS PLAGE", "PARIS L HOPlTAL", "VILLEPARISIS", "PARISOT", "CORMEILLES EN PARISIS", "FONTENAY EN PARISIS"
Donc moi à la base je suis partie sur la création de fonction mais je bloque sur la partie comparaison de chaque ville avec Paris

struct Tri
{
string nouvelle_ville;
};
Tri tri_ville[18];

void tri (int b)
{
string Nom;
int x;

cout<<"Entrez la ville: " <<endl;
cin>> Nom;

for(x = 0; x <= b; x++)
{

if(Nom == tri_ville[x].nouvelle_ville)
{

cout<< "Les villes correspondantes a votre demande sont:" <<endl;
cout <<tri_ville[x].nouvelle_ville ;

}

}
}
il faut que la programme renvoie toutes les villes comportant qui comporte paris quand l'utilisateur entre "Paris".
Merci d'avance!

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Pour comparer deux string il faut utiliser string::compare, pas l'opérateur ==
    La confiance n'exclut pas le contrôle
    1. j'ai essayé avec string::compare mais j'ai pas vraiment compris l'utilisation donc sa n'a pas marché tu peux me donner un exemple d'utilisation avec des commentaires?
    2. ok je vous envoie tout le code et l'intitulé de l'exercice
    3. Modérateur
      Utilises les balises de code, pour conserver l'indentation !!!
  2. Contributeur
    Salut.
    on peut tout à fait utiliser l'opérateur == si on veux, il est défini.
    En fait, tu ne cherches pas à comparer 2 chaines, mais à savoir si l'une contient l'autre. J'utiliserai "find" :
    if(tri_ville[x].nouvelle_ville.find(Nom)!=std::string::npos)
    
    1. je teste avec ce que tu as dis mais il refuse d'entrer dans la boucle maintenant. Et oui, tu as raison je cherche à voir si une chaine contient la chaine "PARIS"
    2. Contributeur
      pas de problème de casse ?
      affiche le nom de ta ville à chaque fois ainsi que le résultat du find, on va bien trouver.
    3. Mais en faite le programme ne rentre pas dans le if donc je ne saurai te dire s'il y a un problème de casse.(Je commence à désespérer personne ne trouve de solution) c'est lourd!!!!
    4. Modérateur
      Donne TOUT le code, c'est difficile de "deviner" où il peut y avoir une erreur sans savoir ce que tu fais ailleurs que dans le code que tu nous as donné... Par exemple qu'est-ce que b ?
    5. Contributeur
      fait les affichage AVANT le if !