web-dev-qa-db-fra.com

Comment compter les lignes d'un fichier en C++?

Comment compter les lignes en utilisant les classes standard fstream et ifstream?

23
malhobayyeb

Que dis-tu de ça :-

  std::ifstream inFile("file"); 
  std::count(std::istreambuf_iterator<char>(inFile), 
             std::istreambuf_iterator<char>(), '\n');
91
Abhay

Vous lisez le fichier ligne par ligne… .. Comptez le nombre de lignes que vous lisez.

11
Martin York

Voici la version correcte de la réponse de Craig W. Wright:

int numLines = 0;
ifstream in("file.txt");
std::string unused;
while ( std::getline(in, unused) )
   ++numLines;
10
Billy ONeal

méthodes du noyau suivant @Abhay

Un code complet que j'ai fait:

size_t count_line(istream &is)
{
    // skip when bad
    if( is.bad() ) return 0;  
    // save state
    std::istream::iostate state_backup = is.rdstate();
    // clear state
    is.clear();
    std::istream::streampos pos_backup = is.tellg();

    is.seekg(0);
    size_t line_cnt;
    size_t lf_cnt = std::count(std::istreambuf_iterator<char>(is), std::istreambuf_iterator<char>(), '\n');
    line_cnt = lf_cnt;
    // if the file is not end with '\n' , then line_cnt should plus 1  
    is.unget();
    if( is.get() != '\n' ) { ++line_cnt ; } 

    // recover state
    is.clear() ; // previous reading may set eofbit
    is.seekg(pos_backup);
    is.setstate(state_backup);

    return line_cnt;
}

il ne changera pas l'état du flux de fichier d'origine et inclura le traitement de situation '\ n'-miss pour la dernière ligne.

0
小文件