Compter - dossier

texte

a marqué ce sujet comme résolu.

Hi, je tente de créer une fonction qui compte le nombre de mot dans un fichier texte, j’ai tenter quelque chose, mais ma fonction ne fonctionne pas. Merci pour l’aide.

string fichier("C:.txt");
    ifstream dossier(dossier.c_str());
    int nombre_de_mot(0);
    string mot;

    if (fichier)
    {
        while (!dossier.eof())
        {
            dossier >> mot;
           nombre_de_mot++;
        }
        cout << "Nb totale de mot " << nombre_de_mot << endl;

    }
}
+0 -0

eof() est un faux ami en C, C++ et probablement d’autres langages

https://cpp.developpez.com/faq/cpp/?page=Manipulation-des-fichiers#Comment-detecter-la-fin-de-fichier-lors-de-la-lecture

EDIT. Ah! Il sort d’où dossier? Il est censé représenter quoi? Si c’est un fichier il est mal nommé. Si c’est autre chose, ben… alors ce n’est pas un fichier. Pourquoi ouvrir un fichier (fichier) et en parcourir un autre? Et à propos, le premier paramètre attendu du constructeur de std::ifstream, c’est une chaine de caractères, et plus besoin du .c_str() depuis 9 ans.

PS: pense à tagguer le langage relatif aux fils de discussions que tu ouvres.

std::size_t nb_words(std::string const& filename) {
    std::ifstream f(filename);
    if (!f) throw std::runtime_error("cannot open "+filename);

    std::size_t nb = 0;
    for ( std::string word
        ; f >> word
        ; ++nb)
    {}
    return nb;
}

Un seul fichier. Distinction nom VS flux. Boucle tant que l’on arrive à lire… (et utilisation correcte des balises de code: sur tout le code)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte