2016-05-14 14 views
-2

Gibt es eine Möglichkeit, eine Zeile am Ende einer Datei hinzuzufügen, auch wenn am Ende leere Zeilen vorhanden sind? Hier ist ein Beispiel-Code:Ignorieren der Leerzeichen am Ende einer Datei

void add(fstream &inputfile, int x, int y) 
    { 
     inputfile.clear(); 
     inputfile.seekg(0, ios::end); 
     while(??)        //while last line is blank space 
      inputfile.seekg(-1, ios::end); //go back one line 
     inputfile << x << "\t" << y << endl; //when while's finished add the new one 
     inputfile.seekp(0); 
    } 

Um diese Ausgabe zu erreichen:

Input file: 
1 2 
2 3 

Wrong output file: 
1 2 
2 3 


3 4 

Correct output file: 
1 2 
2 3 
3 4 

Ist es möglich, auf diese Weise zu tun? Was sollte in diese While-Schleife gelegt werden? Der Code sollte auch dann funktionieren, wenn keine Leerzeichen vorhanden sind. Deshalb müssen wir eine while-Anweisung anstelle einer einfachen while-Anweisung verwenden. Wenn es auf diese Weise nicht möglich ist, haben Sie noch weitere Vorschläge?

Antwort

1

Gehe direkt vor das Ende der Datei. Verwenden Sie dann eine Schleife, die auf das nächste Zeichen zeigt (liest es, ohne weiterzugehen). Wenn es ein Newline ist, geht es ein Zeichen zurück und wiederholt die Schleife. Wenn Sie zum letzten Nicht-Newline-Zeichen kommen, suchen Sie 2 Bytes vor, um dieses Zeichen und den Zeilenumbruch zu überspringen.

inputfile.seekg(-1, ios::end); 
while(inputfile.peek() == '\n') { 
    inputfile.seekg(-1, ios::cur); 
} 
inputfile.seekg(2, ios::cur); 
Verwandte Themen