2011-01-10 8 views
3

Ich habe ein Problem, wenn ich \n ausdrucken möchte Ich verwende endl dafür. Und das Problem ist, wenn ich den Code auf Windows7 ausführe, wird es den Zeilenumbruch nicht ausdrucken. Aber es wird Newline in Ubuntu ausdrucken. Beide Betriebssysteme verwenden den gleichen Compiler GNU g ++.Ofstream druckt nicht Newline zu TXT in Windows7

Also frage ich mich, ob es eine andere Möglichkeit gibt, Newline zu Datei in Windows zu drucken?

+1

Bitte poste ein minimales, kompilierbares Programm, das ich in meinen Editor einfügen und versuchen kann. (Stellen Sie auch Compiler- und Compiler-Version bereit.) – sbi

+0

@sbi - cygwin g ++ 3.4.4 – starcorn

Antwort

3

Die Ausgabe von '\ n' oder die Verwendung von endl ergibt genau den gleichen Inhalt (der einzige Unterschied ist, dass endl ebenfalls geleert wird). Wenn dieses \ n Zeichen geschrieben wird und die Datei sich im "Textmodus" befindet, konvertiert sie die Laufzeitbibliothek in den nativen Mechanismus der Plattform, um Zeilen anzugeben. Unter Unix ist dies unnötig, da dieser Mechanismus ein \ n Byte ist. Unter Windows wird das \ n \ (Wagenrücklauf, Zeilenvorschub). Ich vermute, Sie wissen das alles, aber ich überprüfe es nur für den Fall.

Kurz gesagt, solange Ihre Laufzeitbibliothek für Windows eingerichtet ist, wird der Code, den Sie haben, wie erwartet funktionieren. Ich vermute, dass Sie cygwin g ++ oder einen anderen g ++ -Port verwenden, der nicht für Windows-Linien eingerichtet ist, auch nicht im Textmodus. Einige Editoren werden das nicht übersetzte \ n nicht richtig interpretieren.

+0

Sie haben richtig geraten, ich benutze cygwin's g ++. Versucht, die Datei wieder mit notepad ++ zu öffnen, und sah, dass die Daten korrekt ausgegeben wurden. Ich werde dies als Antwort markieren, sobald der Ticker untergeht – starcorn

+0

@starcom: Ich kann nicht erinnern, wie Cygwins g ++ 's Runtime-Bibliothek eingerichtet ist, aber ich erinnere mich, dass es eine Option (früh in der Erstinstallation) Cygwin zu konfigurieren Verwenden Sie entweder Unix-Stil oder Windows-Stil Linien. –