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 :

Recherche chaine de caractère dans un fichier txt


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de 4rocky4
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 528
    Par défaut Recherche chaine de caractère dans un fichier txt
    Bonsoir tout le monde,

    est-il possible de rechercher une chaine de caractère dans un fichier txt ?
    Admettons que dans mon fichier il y a les lignes :
    toto rouge
    tata bleu
    titi rouge


    Est-il possible de vérifier si "tata" est dans notre fichier ?
    J'ai fais des recherches qui me ramènent souvent sur Getline. Cela me semble inapproprié dans cette situation.

    Merci par avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    Ça intéresse comme problème ! J'ai essayé de le faire à grand coup de get mais sans résultat...

    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
     
    #include<iostream>
    #include<fstream>
    #include<string>
     
    using namespace std;
     
     
    int main(){
     
     
     
    	int compteur = 0;
    	ifstream fichier("Fichier.txt");
    	string mot;
    	cout << "Mot a rechercher ?" << endl;
    	cin >> mot;
     
    	if ( mot.size() || fichier.good()){
    		for( int i = 0 ; compteur != mot.size() && i <= mot.size() ; i++ ){
    			if ( fichier.get() == mot.at(i) ){
    				compteur += 1;
    			} else {
    				compteur = 0;
    			}
    		}
     
    		if ( compteur == mot.size() ){
    		cout << "Occurence du mot insere trouve" << endl;
    		} else {
    			cout << "Pas d'occurence du mot insere trouve" << endl;
    		}
    	} else {
    		cout << "Fichier ou Mot Invalide";
    	}
     
    	return 0;
    }

    J'ai modifié mon code fraichement et, n'étant plus très frais je crois que je l'ai complètement bousillé : je le poste quand même

  3. #3
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    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
    Par défaut
    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
     
    template <class Char>
    std::size_t get_file_size(std::basic_ifstream<Char>& s)
    {
      s.seekg(0, std::end);
      std::size_t l = s.tellg();
      s.seekg(0, std::beg);
      return l;
    }
     
    bool f(const std::string& filepath, const std::string& str_to_find)
    {
      std::ifstream in(filepath);
     
      if (!in) return false;
      std::size_t fsize = get_file_size(in);
      std::vector<char> v(fsize);
      in.read(&v.front(), v.size());
      std::string content(v.begin(), v.end());
     
      return (content.find(str_to_find) != std::string::npos);
    }
    Mis à part l'ordre des arguments de read, je pense que ça peut fonctionner

    Sinon, à base de getline :

    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
     
    bool f(const std::string& filepath, const std::string& str_to_find)
    {
      std::ifstream in(filepath);
     
      while (in && !in.eof())
      {
        std::string line;
        std::getline(in, line);
        // if (line.find(str_to_find) == std::string::npos) // erreur sur cette ligne
        if (line.find(str_to_find) != std::string::npos)
        {
          return true;
        }
      }
     
      return false;
    }
    Sachant que cette dernière version ne peut pas vérifier si une chaine contient un caractère '\n'.
    [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.

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

Discussions similaires

  1. [Débutant] Trouver la position d'une chaine de caractère dans un fichier .txt
    Par martineaston dans le forum MATLAB
    Réponses: 4
    Dernier message: 19/06/2013, 14h14
  2. Recherche chaine de caractère dans un fichier
    Par izghad_06 dans le forum Shell et commandes POSIX
    Réponses: 7
    Dernier message: 17/12/2010, 12h44
  3. Réponses: 3
    Dernier message: 25/07/2006, 08h40
  4. [VBS] Recherche chaine de caractères dans un fichier
    Par parker13 dans le forum VBScript
    Réponses: 1
    Dernier message: 08/07/2006, 00h22
  5. [VB]Recherche d'une chaine de caractère dans un fichier
    Par Empty_body dans le forum VB 6 et antérieur
    Réponses: 26
    Dernier message: 16/02/2006, 09h10

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