por - ¿Cómo contar las líneas de un archivo en C++?
manejo de archivos en c pdf (7)
¡Divida el tamaño del archivo por el número promedio de caracteres por línea!
¿Cómo puedo contar líneas utilizando las clases estándar, fstream
e ifstream
?
Esta es la versión correcta de la respuesta de Craig W. Wright:
int numLines = 0;
ifstream in("file.txt");
std::string unused;
while ( std::getline(in, unused) )
++numLines;
Lees el archivo línea por línea. Cuente el número de líneas que lee.
Qué tal esto :-
std::ifstream inFile("file");
std::count(std::istreambuf_iterator<char>(inFile),
std::istreambuf_iterator<char>(), ''/n'');
métodos kernel siguiendo a @Abhay
Un código completo que he hecho:
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;
}
no cambiará el estado de la secuencia del archivo de origen e incluirá el procesamiento de situación ''/ n''-miss'' para la última línea.
int numLines = 0;
ifstream in("file.txt");
//while ( ! in.eof() )
while ( in.good() )
{
std::string line;
std::getline(in, line);
++numLines;
}
Hay una cuestión de cómo se trata la última línea del archivo si no termina con una nueva línea. Dependiendo de lo que esté haciendo, es posible que desee contarlo y es posible que no. Este código lo cuenta.
int aNumOfLines = 0;
ifstream aInputFile(iFileName);
string aLineStr;
while (getline(aInputFile, aLineStr))
{
if (!aLineStr.empty())
aNumOfLines++;
}
return aNumOfLines;