2016-05-24 15 views
-4

Gibt es eine Möglichkeit, Zeilenumbrüche beim Lesen einer Textdatei zu überspringen? Zum Beispiel sagen wir, ich habe zwei Textdateien, input.text und output.text.Wie Sie Zeilenumbrüche bei der Dateiverarbeitung ignorieren

Meine input.text Datei sieht wie folgt aus:

 
welcome to stackoverflow<line break here> 
another sentence 
. 
. 
. 

las ich die erste Zeile von input.text und einen Teil der Linie zu output.text schreiben.

Aber wenn ich die zweite Zeile nach dem Zeilenumbruch lese, geht meine erste Zeile in der Textdatei verloren.

Was soll ich tun?

die Datei lesen verwende ich diesen Code:

ifstream input.open("input.text"); 
while(input) 
{ 
    getline(input,string); 
} 

und

ofstream output; 
output<<string;` 
+0

Umm was? vielleicht kenne ich den Tastencode für die Eingabetaste 13 ... –

+1

Ich kann nicht wirklich verstehen, was die Frage stellt. 1) Was hast du probiert? 2) Was hast du erwartet? 3) Was ist eigentlich passiert? – immibis

+0

im Grunde versuche ich einen Scanner für meine Praxis gemacht und ich lese Code aus der Textdatei und schreibe das Token zu Ausgabedatei aber mein Problem ist, wenn ich Eingabe eingeben Eingabe Textdatei alle meine Token, die bereits in der Ausgabe schreiben Datei sind löschen. Warum ? –

Antwort

1

Ihr Problem nichts mit der Enter-Taste und alles zu tun hat, zu schreiben, zu tun, wie Sie lesen/Schreiben aus der Datei. Ihr Code sieht offenbar wie folgt aus:

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

int main() { 
    std::string string; 
    std::ifstream input("input.text"); 

    while (input) { // bad 
     std::getline(input, string); 
    } 

    std::ofstream output("output.text"); 
    output << string; 
} 

Die "while" Schleife überschreibt string für jede Zeile. Wenn Sie drei Zeilen Text hatten, würde string am Ende der while-Schleife nur die letzte Zeile der Eingabedatei enthalten.

Was Sie vielleicht tun möchten, ist etwas mehr wie:

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

int main() { 
    std::string string; 
    std::ifstream input("input.text"); 
    std::ofstream output("output.text"); 

    while (std::getline(input, string)) { 
     output << string; 
    } 
} 

Hier ist eine einfachere Version ist mit cin und cout:

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

int main() { 
    std::string string; 
    while (std::getline(std::cin, string)) { 
     std::cout << string; 
    } 
} 

Wie geschrieben, die "\ n" am Ende von jeder Zeile fehlt: http://ideone.com/0FhEyj Sie können dies beheben, indem Sie die Ausgabezeile zu

  std::cout << string << "\n"; 
+0

danke seiner Arbeit .... –

Verwandte Themen