Ich habe den folgenden Code, wo ich versuche, die Anzahl der Zeilen in einer Eingabedatei zu zählen, und ich habe mehrere verschiedene Möglichkeiten der Implementierung versucht, aber kein Glück.Was ist die optimale Bedingung für das Zählen von Zeilen in der Textdatei?
int checkData(string File)
{
string temp;
int linecount = 0;
ifstream input(File);
input.open(File);
while()
{
getline(input,temp);
linecount++;
temp.clear();
}
return linecount;
}
Bisher habe ich versucht:
while(!input.eof())
{
...
}
und
while(getline(input,temp).good())
{
...
}
Der erste tut die Schleife brechen, und ich bin nicht ganz sicher, warum . (Ich bin mir ziemlich sicher) dass getline einen eingebauten Stream-Puffer hat, so sollte es automatisch die Netzleitung lesen, jedes Mal wenn ich in eine Linie ziehe und es zurückwerfe, aber keine Würfel. Für die Sekunde wird die Schleife überhaupt nicht ausgeführt, was für mich immer noch keinen Sinn ergibt (das besagt, dass die erste Zeile der Datei keine gute Eingabe ist?). Die Testdatei Ich verwende ist:
this is a test this Cake
this is a test this Cake
this is a test this Cake
this is a test this Cake
So sollte Linecount als 4 zurückkehren, wenn sie richtig ausgeführt wird. Bevor ich das ausführe, habe ich bereits überprüft, ob die Datei korrekt geöffnet wird.
Das erste ist wohlbekanntes Problem. Das Entfernen von '.good()' von Sekunde sollte es lösen. – Incomputable
Gerade ausgeführt, und es führt immer noch nicht die While-Schleife beim Entfernen der .good() Flag. –
@GrahamWilson Sie sollten dies überprüfen - Entfernen von gut() sollte in der Tat Ihr Problem beheben (nicht nur im Prinzip; Ich kopierte und kompilierte Ihren Code). BTW, temp.clear() ist nicht notwendig. – jwimberley