2017-03-03 20 views
-1

click here for the text fileWie kann die Anzahl der Zeilen in einer Datei mit C++ gezählt werden?

Ich habe den folgenden Code in Code :: Blocks IDE verwendet. Ich bekomme die Anzahl der Zeilen als 2. Bitte helfen Sie mir mit dem Code.

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 


int main() 
{ 
ifstream in("readInt.txt", ios::in); 
if(!in) 
{ 
    cout << "Cannot open file"; 
    return 1; 
} 

string str; 
int j=0; 

while(in) 
{ 
    getline(in,str); 
    j++; 
} 

cout << "No of lines are: " << j; 
in.close(); 
return 0; 

} 
+1

Wie viele Zeilen sind in der Datei? Vergesst nicht. Ich sehe, dass es in der extern verknüpften Datei 4 Zeilen gibt. – wallyk

+0

ja ich bekomme als 2 ausgegeben. Gibt es einen Fehler im Code? – Vishal

+0

Verwenden Sie 'while (getline (in, str)) {...}'. –

Antwort

2

Sie erhalten ein zu kleines Ergebnis, weil die Zeilenende in Textdatei auf eine andere Weise als die Konvention auf Ihrem System codiert sind.

Speichern oder erstellen Sie die Datei mit den korrekten Zeilenenden für Ihr System neu.


In der anderen Richtung, in Richtung auf ein zu hohes Ergebnis des präsentierten Code

while(in) 
{ 
    getline(in,str); 
    j++; 
} 

& hellip; würde für eine leere Datei den Wert 1 ergeben.

tun Statt

while(getline(in,str)) 
{ 
    j++; 
} 

Hinweis: diese Bemerkung nur Korrektheit deckt, nicht die Effizienz.

+0

Wie kann ich speichern oder neu erstellen die Datei mit korrekten Zeilenenden, gefolgt von meinem System? – Vishal

+0

@Vishal: Im Allgemeinen mit einem Editor. Ich habe Notepad ++ benutzt. In seinem * Edit * Menü gibt es ein * EOL Conversion * Untermenü. Welche hat Baumelemente: * Windows (CR LF) * und * Unix (LF) * und * Macintosh (CR) *. Der letzte ist aus historischen Gründen, glaube ich. Ich denke, dass moderne Macs Unix-Konvention verwenden. –

+0

Betreff: Wie man Zeilenenden ändert: Die Befehle 'unix2dos' und' dos2unix' wurden dafür geschrieben. Wenn Sie es programmgesteuert machen müssen (d. H. Ohne eine externe App), ist es nicht so schwierig, es alleine zu machen, aber Sie müssen die Datei im Rohmodus (Binärmodus) öffnen und entsprechend anpassen. Sie werden jedoch eine Art Parameter als Hinweis benötigen, es sei denn, Sie wollen im wahrsten Sinne des Wortes raten (was in diesem Fall eine gut geschriebene Funktion mit einer * sehr * hohen Wahrscheinlichkeit recht haben kann). – frasnian

2

Zuerst Textdatei hat keine neuen Charakter so im Text nur dort eine Zeile

es ändern und versuchen, in Ihrem Code mit

while(getline(in,str)) 
{ 
    j++; 
} 

auf diese Weise vermeiden Sie zusätzliche Zeilen zählen

Verwandte Themen