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 :

texte à copier entre 2 mots


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Par défaut texte à copier entre 2 mots
    bonjour,

    Le pb:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while ( getline( buffer,line ) )
    {	
    for(i = line.find(rech, 0); i != string::npos; i = line.find(rech,i))
      {
      nbRech++;
      i++;
      }
      nblignes++;	//compte le nb de lignes  
    }
    buffer est un stringstream (c'est la copie d'un txt).
    rech est un mot char* que je recherche dans le texte du buffer.
    nbRech compte le nb d'occurrence du mot.

    Ce que je voudrais, c'est copier tout le texte qui se trouve entre chaque occurrence du mot.

    Je n'y arrive pas.
    Merci de votre aide.

    JL

  2. #2
    Membre éclairé Avatar de Vespasien
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 383
    Par défaut
    Salut,
    çà va pas beaucoup t'aider mais çà va tuer un papillon.
    Si ceci retourne 0 alors ta boucle deviens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(0; i != x; i = 0) {
        ...
    }
    soit une boucle infinie.

    Ensuite, string::npos est sensé représenter quoi?

  3. #3
    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 : 50
    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
    Par défaut
    Citation Envoyé par Vespasien Voir le message
    Salut,
    çà va pas beaucoup t'aider mais çà va tuer un papillon.
    Si ceci retourne 0 alors ta boucle deviens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(0; i != x; i = 0) {
        ...
    }
    soit une boucle infinie.
    Sauf qu'il y a un i++ dans la boucle... Je dis pas que c'est super lisible, mais bon...

    Citation Envoyé par Vespasien Voir le message
    Ensuite, string::npos est sensé représenter quoi?
    C'est une valeur sentinelle utilisée pour indiquer sur un string qu'une recherche n'a rien trouvé. Un peu comme myVector.end() pour les itérateurs.

    Pour le problème initial, je n'ai pas trop compris ce que signifie copier. Peut-être le but est-il de découper selon le motif ? http://www.boost.org/doc/html/string...ring.split.hpp
    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.

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Par défaut plus d'explication
    ce que je souhaiterai, c'est que lorsque que je trouve le mot dans le texte, je puisse sauvegarder tout le texte à partir de ce mot jusqu'à sa prochaine apparrition de celui-ci.
    Je ne me souviens plus comment on fait pour enregistrer les positions des mots.
    Une fois les positions trouvées, il suffirait d'enregistrer tous les caractères entre les positions.

    Merci
    JL

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 82
    Par défaut
    Pourquoi ne pas utiliser les vieilles fonctions "strstr", "strspn", etc. ?

    Quitte à copier l'intégralité du fichier dans un tampon, vous aurez ainsi toute latitude pour traiter votre texte et avec des performances supérieures.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    http://www.cppreference.com/cppstring/index.html

    tu dois avoir les fonctions qui t'interessent.

    A mon avis:

    tu as juste un problème d'algorithmie. Découpe ton problème en plusieurs étapes simples et ça devrait aller.

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

Discussions similaires

  1. Récupérer le texte entre deux mots
    Par Ramdoulou dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 11/08/2008, 16h48
  2. [C# 1.1] Comment récupérer du texte entre des mots connus ?
    Par foolsky dans le forum Windows Mobile
    Réponses: 8
    Dernier message: 26/04/2006, 14h15
  3. Réponses: 5
    Dernier message: 15/02/2006, 11h27
  4. recuperer le texte afficher entre les balises <a> et &
    Par zetta dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/11/2005, 15h25
  5. espace entre 2 mots sur 1 meme ligne
    Par zorba49 dans le forum ASP
    Réponses: 1
    Dernier message: 24/08/2005, 14h59

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