Chercher un mot dnas un fichier

Fermé
Bimoil Messages postés 29 Date d'inscription samedi 3 octobre 2020 Statut Membre Dernière intervention 21 novembre 2020 - Modifié le 19 nov. 2020 à 15:30
Bimoil Messages postés 29 Date d'inscription samedi 3 octobre 2020 Statut Membre Dernière intervention 21 novembre 2020 - 21 nov. 2020 à 16:06
Hi, je tente de faire un programme qui demande a l'utilisateur d'entrer un mots et si le mots entrer se trouve dans un fichier txt le mot doit s'afficher. J'ai commencer, mais je n'arrive pas a terminer
  
    ifstream fichier("Dossier.txt");
string recu = "Dossier.txt";

 string lire;

    if (fichier) {
       
        while (fichier>> lecture);
    }
    else {
        cout << "Introuvable";
    }
A voir également:

3 réponses

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
19 nov. 2020 à 07:11
Bonjour,

Pour rechercher si un mot est dans un fichier, il faut :
- parcourir toutes lignes du fichier
- rechercher si le mot est dans une de ces lignes.

Pour lire une ligne d'un fichier, il y a la fonction :
std::getline(fichier, ligne_du_fichier);
. Cette fonction a pour valeur de retour le fichier et si on le teste comme un booléen il indique
true
tant que quelque chose à été lu, et
false
sinon. Pour lire toutes les lignes, on peut faire :
while ( std::getline(fichier, ligne_du_fichier) ) {
    .... utiliser ligne_du_fichier ....
}

Pour chercher un mot dans une ligne ça dépend de la structure de la ligne. C'est immédiat si la ligne n'a qu'un seul mot :
    if ( mot == ligne_du_fichier ) {
        .... le mot été trouvé ....
    }
Sinon c'est un peu plus complexe...
0
Bimoil Messages postés 29 Date d'inscription samedi 3 octobre 2020 Statut Membre Dernière intervention 21 novembre 2020
Modifié le 19 nov. 2020 à 15:26
Merci, simple question cela serait pas mieux d'y aller mot par mot ? Car il n'a pas seulement qu'un mot par ligne dans le fichier texte.
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
20 nov. 2020 à 19:09
c'est en effet plus simple d'y aller mot dans ce cas
0
Bimoil Messages postés 29 Date d'inscription samedi 3 octobre 2020 Statut Membre Dernière intervention 21 novembre 2020
20 nov. 2020 à 22:17
Et quelle est la fonction pour y aller mot a mot ? Je sais que pour faire caractère par caractère c'est get(). Mes mot par mot je ne trouve pas.
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
21 nov. 2020 à 14:26
Je ne l'ai pas indiquée car c'est celle que tu as mise dans ton exemple!
bool  le_mot_a_ete_trouve{};      // a priori n'a pas été trouvé
std::ifstream  fichier("Dossier.txt");
if ( fichier ) {
    std::string  mot_du_fichier;
    while ( fichier >> mot_du_fichier ) { // lecture d'un mot du fichier
        if ( mot_a_chercher == mot_du_fichier ) {
            le_mot_a_ete_trouve = true; // on a fini par le trouver
            break;              // inutile de continuer le parcours
        }
    }
}
0
Bimoil Messages postés 29 Date d'inscription samedi 3 octobre 2020 Statut Membre Dernière intervention 21 novembre 2020
Modifié le 21 nov. 2020 à 16:50
Merci, est ce qu'il ce peut qu'il vous manque un cin qui demande le mot a l'utilisateur ?
And je ne comprend pas cette partie if ( mot_a_chercher == mot_du_fichier ). Est ce que tu as déclarer une variable mot a chercher ?
0