[C++] Fonction compte nombre de ligne fichier

Résolu
Zangdar -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
J'essai de coder une fonction en c++ pour compter le nombre de lignes d'un fichier texte.

#include <string>
#include <fstream>
#include <iostream>

using namespace std;
int nombreLignes (string fichier);

int main()
{
    string fichier("\"noeud.txt\"");
    cout << fichier <<endl;
    cout<<nombreLignes(fichier) <<endl;

    return 0;
}

//Fonction qui renvoi le nombre de ligne d'un fichier
int nombreLignes (string fichier2) {

    std::ifstream fichier(fichier2);
    int Count = 0;
    std::string s;

    if ( fichier ) {
        while (std::getline(fichier, s)) {Count++;}
        return Count;
    }

    else { cout << "echec" <<endl;}
    return 0;
}



J'ai deja écrit ce code mais j'obtient des erreurs de compilation et je ne sais pas pourquoi ...
Configuration: Windows XP
Firefox 2.0.0.1

4 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    #include <string>
    #include <fstream>
    #include <iostream>
    
    int nombreLignes (const std::string & filename) {
        std::ifstream fichier(filename.c_str());
        std::string s;
    
        if(fichier){
            unsigned int count = 0;
            while(std::getline(fichier,s)) ++count;
            return count;
        }else{
            std::cout << "Ne peut ouvrir " << filename << std::endl;
        }
        fichier.close();
        return 0;
    }
    
    int main(int argc,char **argv)
    {
        if(argc != 2){
            std::cerr << "usage " << argv[0] << " fichier" << std::endl;
            return 1;
        }
        std::cout << nombreLignes(argv[1]) << std::endl;
        return 0;
    }

    Bonne chance
    9
  2. Moi
     
    C'est moi où t'essayes de lire le fichier "noeud.txt" ?
    Essayes en faisant:
    string fichier("noeud.txt");
    Et pis comme l'a très bien dit Lupin, vires tous les std::
    2
  3. Utilisateur anonyme
     
    Bonjour,

    autre commentaires...

    le fait d'utiliser :

    using namespace std;

    ne t'oblige pas à écrire :

    std::ifstream ...

    simplement

    ifstream ...

    devrait suffire.

    Lupin
    1
  4. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    essai:
    string fichier("noeud.txt");
    et :
    std::ifstream fichier(fichier2.c_str());
    sinon, tu met un caractère guillement dans ton nom de fichier, ce qui doit pas être top
    pour le deuxième, il me semble qu'il faut un cahr* et non un string
    0