Datei einlesen und Anzahl der Zeilen bestimmen

Hallo,
ich möchte in einem Programm eine Datei einlesen und die Anzahl der Zeilen herausfinden. Gibt es da irgendeine Möglichkeit. Die Zeilen haben immer unterschiedliche, unbekannte Längen.
Ich hab gedacht, dass es vielleicht irgendeine Möglichkeit gibt das über find() zu machen. Vielleicht gibts aber sogar eine Funktion find_number_of() ^^
Bin dankbar für jede Hilfe
bastionmancher
 
Hi.

Es gibt sicherlich mehrere Möglichkeiten.

Bsp. 1:
C++:
ifstream file(...);

string zeile;
int anzahl = 0;

while(getline(file, zeile)) anzahl++;

Bsp. 2
C++:
#include <algorithm>
#include <iomanip>
#include <iterator>
...

ifstream file(...);

file >> noskipws;
cout << "Zeilen: " << count(istream_iterator<char>(file),
                            istream_iterator<char>(),
                            '\n') << endl;
Gruß
 
Zuletzt bearbeitet:
Ich finde deine erste Möglichkeit eigentlich am elegantesten deepthroat. Aber stoppt denn die while Schleife automatisch bei eof? Oder müsste man das irgendwie so machen:
Code:
while(getline(file, zeile)!=EOF)
bastionmancher
 
Ich finde deine erste Möglichkeit eigentlich am elegantesten deepthroat. Aber stoppt denn die while Schleife automatisch bei eof? Oder müsste man das irgendwie so machen:
Code:
while(getline(file, zeile)!=EOF)
bastionmancher
Nein. Man muß (eigentlich) niemals mit den iostream Klassen explizit auf EOF prüfen. Die Eingabe- und Ausgabe-Operatoren der Stream Klassen geben immer den Streamzustand zurück - der ist nur "true" wenn weder EOF, noch irgend ein anderer Fehler aufgetreten ist. Wenn man C++ Code sieht der explizit auf EOF prüft, dann hat derjenige vermutlich nicht verstanden wie man die iostream Klassen verwenden sollte.

Gruß
 
Zurück