Problem mit Linefeed bei Zuweisung von Text

Alles rund um die Programmierung mit Qt
Antworten
QtNoob2008
Beiträge: 54
Registriert: 10. April 2008 08:27

Problem mit Linefeed bei Zuweisung von Text

Beitrag von QtNoob2008 »

Hallo,
hab ein kleines Problem.
Wenn ich einen QString anlege mit QString ("Zeile1\nZeile2");
wird das Linefeed berücksichtigt.
Wenn ich aber den Text von woanders lese und dort auch das \n vorhanden ist. Wird der Zeilenumbruch nicht interpretiert.

Wer kann mir helfen ?

Gruß
Noob
androphinx
Beiträge: 170
Registriert: 26. Januar 2009 09:19
Wohnort: 127.0.0.2

Beitrag von androphinx »

das ist os-abhängig. unix reicht \n windows braucht unbedingt \r\n.
qt hat sich wie unix auf \n festgelegt...

Mfg androphinx
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Das ist eine Compilersache... wenn du in C-Code "\n" schreibst, werden da nicht zwei Bytes eingefuegt, sondern nur eines (0x0A). Wenn du genau diesen String dynamisch einliest (z.B. aus einer Textdatei, oder Netzwerk oder sonst woher) bekommst du zwei Bytes (0x5C + 0x6E, '\' und 'n').
Oder anderst ausgedrückt: die eingelesenen Rohdaten müssen natürlich einen "echten" Zeilenvorschub (0x0A) haben oder _du_ musst die Interpretation machen (Replace von "\\n" durch "\n")
QtNoob2008
Beiträge: 54
Registriert: 10. April 2008 08:27

Beitrag von QtNoob2008 »

Hallo,

sorry dass ich mich erst jetzt melde, bin erst jetzt dazu gekommen zu antworten. Vielen Dank für deine sehr gute Erklärung!
Kurz nachdem ich die Frage gestellt hatte, hab ich auch schon selbst die Lösung gefunden. Hinter dem "\n" steckt ja ein "nicht darstellbares" ASCII Zeichen. Hatte gedacht dass es beim Einlesen direkt berücksichtigt werden würde. Hab dann in einer .ts Datei (Übersetzungsdatei) geschaut und dort wird eben ein richtiger Zeilenvorschub abgespeichert.... Hab es genauso wie du es beschrieben hast durch ein replace gelöst.

Trotzdem Danke !!!

Gruß QtNoob2008
Antworten