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 avec std::string::find et std::regex


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2015
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2015
    Messages : 40
    Points : 37
    Points
    37
    Par défaut Problème avec std::string::find et std::regex
    Bonjour,

    J'essaie de faire cet exercice http://codekata.com/kata/kata08-conflicting-objectives/

    J'ai récupéré les mots à 6 lettres dans un vecteur, je le parcours et j'ai essayé tout ce que j'ai trouvé pour chercher les deux mots qui le composent.

    Je le découpe bien, mais seulement je n'arrive pas avec std::string:: find à trouver un mot dans mon fichier sans qu'il trouve également ce mot dans une phrase exemple :

    je recherche salut, il va me dire que salutation est finde, ce qui n'est pas faux mais ce n'est pas ce que je cherche.

    J'ai également essayé avec les regex_search en mettant mon mot entouré de \\b dans un std::regex , mais c'est affreusement long et je n'arrive pas à le faire comme il faut.
    Je n'ai pas boost et je prefererai éviter de l'installer etc.
    Avez-vous une solution?
    Merci =)

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 130
    Points : 33 063
    Points
    33 063
    Billets dans le blog
    4
    Par défaut
    Salut,

    le fait est que "salut" se trouve dans "salutation", donc le find n'est pas à blâmer.
    Si tu cherches la chaîne "salut" exclusivement, faut juste étendre les conditions de recherche. Par exemple en devant être précédé et suivi d'un espace, d'une virgule, ..
    Si tu as un vector de mots, alors pourquoi utiliser find et non == ?
    Et oui l'utilisation de regexp est forcément plus lente, c'est un peu un monstre la regexp.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2015
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2015
    Messages : 40
    Points : 37
    Points
    37
    Par défaut
    J'ai oublié de préciser ceci mais j'ai déjà essayé avec un \r\n après (il y a un retour chariot a chaque ligne dans le fichier)
    seulement si je prend lut^m , il va quand même me trouver salut^M , a moins que je puisse en mettre un également au début .

    Je vais essayer ceci ,

    merci.

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

Discussions similaires

  1. Problème avec la methode c_str() de std::string
    Par kzwix dans le forum Langage
    Réponses: 7
    Dernier message: 08/12/2010, 13h23
  2. Réponses: 2
    Dernier message: 14/06/2010, 16h21
  3. problème avec std::string:find()
    Par Spidyy dans le forum SL & STL
    Réponses: 8
    Dernier message: 03/09/2009, 02h25
  4. [VBA-E]Problème avec la fonction Find
    Par Mirx1 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 27/04/2006, 19h43
  5. Sale problème avec les strings et les fichiers
    Par acieroid dans le forum C++
    Réponses: 18
    Dernier message: 26/04/2006, 10h47

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