[C++] Fonction compte nombre de ligne fichier

Résolu/Fermé
Zangdar - 22 déc. 2006 à 13:57
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 25 janv. 2007 à 17:35
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 ...
A voir également:

4 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
25 janv. 2007 à 17:35
#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
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
Utilisateur anonyme
23 déc. 2006 à 15:16
Bonjour,

autre commentaires...


le fait d'utiliser :

using namespace std;

ne t'oblige pas à écrire :

std::ifstream ...

simplement

ifstream ...

devrait suffire.

Lupin
1
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
22 déc. 2006 à 16:46
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