2016-04-22 10 views
-2

Hallo Ich versuche, die ersten 10 Zeilen Text in einer Datei anzuzeigen. Es wird jedoch nur die gesamte Datei angezeigt, anstatt sie auf 10 Zeilen zu beschränken.Anzeige einer bestimmten Anzahl von Zeilen aus der Textdatei

int count = 0; 

string input = ""; 

fstream file; 

file.open("Test.txt", ios::in); 

for (int i = 0; i <= 10; ++i) { 

    getline(file, input); 

    cout << input; 
} 
+0

Was ist der Inhalt Ihrer Datei? –

+0

Wenn ich du wäre, würde ich nach "Eingabe" ein doppeltes endl setzen, um genau zu sehen, was das Programm als Zeile sieht – bisthebis

+2

Das druckt 11 Zeilen wegen <=, aber nicht die ganze Datei hier drüben. – Unimportant

Antwort

1

sollte Ihr Code funktioniert, aber was verursacht dies könnte sein:

Case1: dont sagen Sie mir Ihre Eingabedatei keine Newline char hat, habe gewickelt. cus thats, geht, dumm sein -.-

Case2: versuchen cout << input << endl; hinzufügen und sehen, ob seine die ganze Datei zu drucken oder einfach nur durch die Linie

auch seinen Druck 11 Zeilen der Dateizeile drucken, so mögen Sie vielleicht ändern <=

0

Zusätzlich zu Bisthebis Vorschlag (ich würde es ändern, um '----' zu drucken), überprüfen Sie die Zeilenenden für Ihre Datei. Der Mac benutzt '\ r', Unix/Linux benutzt '\ n' und Windows benutzt '\ r \ n'. Wenn Sie Windows verwenden, können Sie notepad ++ aufrufen, um versteckte Zeichen anzuzeigen.

Gemäß C++ spec (http://www.cplusplus.com/reference/string/string/getline/) berücksichtigt getline nur '\ n' als neuen Zeilentrenner.

+0

Aber wie in diesem Fall, wenn die Datei in einem Textmodus geöffnet wird, wird das '\ r \ n' in '\ n' in Windows übersetzt. Ich bin mir nicht sicher über Mac. –

+0

Ist das Verhalten für cin >> und getline unterschiedlich oder gleich? – bigbyte

+0

Ich meinte beim Öffnen einer Datei mit einem Dateistream im Textmodus, cin ist der Standard-Eingabestrom (Tastatur) und * getline * und Extraktion * operator >> * sind für beide Streams verfügbar. –

Verwandte Themen