Line Feed und Carriage Return
-
Guten Tag allerseits,
das Problem ist ja weithin bekannt:
Linux will für eine neue Zeile ein 'Line Feed'
genau wie Mac OS, was aber bis zur Version 9.x noch ein 'Carriage Return' haben wollte. Nur Microsoft besteht weiterhin auf die Zeit der Schreibmaschienen und Fernmelder und will beides für eine neue Zeile haben.Insofern diese Theorie richtig ist, erwarte ich von diesem
char hallo = 10; std::cout << "Hallo" << hallo << "Hallo";
C++-Code folgende Ausgabe:
Hallo Hallo
, da der Cursor auf Grund des 'Line Feed' ohne 'Carriage Return' nur in die nächste Zeile springen sollte ohne dabei in die erste Position dieser Zeile zu springen.
Ich bekomme aber, wenn ich das Programm in cmd.exe aufrufe, einen ganz normalen Zeilenumbruch ausgegeben:
Hallo Hallo
Meine Frage: Wieso?
Gruß Gerrit
-
[gelöscht]Ich bin verwirrt.
-
Edit: Nach dem Editieren deiner Nachricht war ich verwirrt.
Dein vorhergesagtes Ergebnis würde (und das kommt auch tatsächlich) bei folgendem Code entstehen:
char hallo = 13; std::cout << "Hallo" << hallo << "Hallo";
Ergebnis:
Hallo
Gruß Gerrit
Edit # 2: Ich auch!
Edit # 3: Wir sollten unbedingt aufhören zur gleichen Zeit zu editieren
-
mausfunktion schrieb:
Dann bin ich ja um einiges schlauer!
Nein, ich fürchte, nicht. Ich könnte einiges verwechselt haben.
-
mausfunktion schrieb:
das Problem ist ja weithin bekannt:
Die Lösung auch:
endl
oder auch
<< "\n"
was deine BS-Abhängigkeiten reduziert.
-
Die Lösung(en) sind auch mir bekannt.
Mir ging es nur darum, wieso mein Beispiel nicht in der gewünschten Form funktioniert. Aus reinem Interesse
Gruß Gerrit
-
mausfunktion schrieb:
Die Lösung(en) sind auch mir bekannt.
Mir ging es nur darum, wieso mein Beispiel nicht in der gewünschten Form funktioniert. Aus reinem Interesse
Gruß Gerrit
Windows ist da sowieso nicht konsequent. Bei der Konsole wird ein Zeilenumbruch ausgegeben, im Editor sieht man allenfalls ein Kästchen.
-
Ich denke es ist so, weil der Stream cout im Textmodus geöffnet ist und deswegen das \n zu einem \r\n umgewandelt wird.
-
player424 schrieb:
Ich denke es ist so, weil der Stream cout im Textmodus geöffnet ist und deswegen das \n zu einem \r\n umgewandelt wird.
Meinst du ios::binary? Bei printf() ist es aber das Gleiche und da gibt es keinen Textmodus.
-
Doch dort gibt es auch einen Textmodus. Wenn man nämlich bei Modus kein b angibt wird der Stream im Textmodus geöffnet.
http://cplusplus.com/reference/clibrary/cstdio/fopen/
-
player424 schrieb:
Doch dort gibt es auch einen Textmodus. Wenn man nämlich bei Modus kein b angibt wird der Stream im Textmodus geöffnet.
http://cplusplus.com/reference/clibrary/cstdio/fopen/OK, aber stdout kann man wohl schlecht selbst mit Modus öffnen .
-
Die sind doch Standardmäßig im Textmodus geöffnet
-
player424 schrieb:
Die sind doch Standardmäßig im Textmodus geöffnet
yeah, wäre lustig ohne
-
wxSkip schrieb:
player424 schrieb:
Die sind doch Standardmäßig im Textmodus geöffnet
yeah, wäre lustig ohne
Dann benutz freopen^^
-
player424 schrieb:
wxSkip schrieb:
player424 schrieb:
Die sind doch Standardmäßig im Textmodus geöffnet
yeah, wäre lustig ohne
Dann benutz freopen^^
^^ da müsste ich ja einen Dateinamen angeben