2017-02-06 1 views
-1

I basierend mit dem >> Stream Operator eine Textdatei zu lesen versuchen, aber dies scheint die Datei Wort für Wort zu lesen:Ende der Zeile erkennen, während sie von einer Text-Datei C Lese ++

void printFile(char filename[]) 
{ 
    ifstream input; 
    input.open(filename); 

    char output[50]; 
    if (input.is_open()) { 
     while (!input.eof()) { 
      input >> output; 
      cout << output << endl; 
     } 
    } 
    else cout << "File is not open!"; 

    input.close(); 
    cout << endl; 
} 

Der Das einzige Problem dabei ist, dass die Zeilenumbrüche nicht ausgedruckt werden.

Bitte beachten Sie, dass ich immer noch C++ lerne und das Ziel ist, dies ohne using string s (also ohne getline) zu erreichen. Gibt es einen Weg dies zu tun, oder ist es einfach unmöglich?

+1

das Ziel nur nicht getline Ist? Sie könnten stattdessen nach Zeichen einlesen, was den Verlust von '\ n' verhindert. – odin

+0

Lesen Sie die Datei mit getline(), damit Sie sich keine Gedanken über Zeilenumbrüche machen müssen. Und lesen Sie https://latedev.wordpress.com/2012/12/04/all-about-eof, um zu sehen, warum Sie eof() nicht loopen sollten. –

+0

@NeilButterworth Ich glaube, du hast einen Teil meiner Frage verpasst –

Antwort

0

Dank @odin ich die Lösung durch das Lesen der Datei von Zeichen anstelle von Wort gefunden:

void printFile(char filename[]) 
{ 
    char ch; 
    fstream fin(filename, fstream::in); 
    while (fin >> noskipws >> ch) { 
     cout << ch; 
    } 
    fin.close(); 
} 
Verwandte Themen