Zeilenumbrüche aus Text entfernen [vc++]

Hallo Leute,
bin hier grad bischen am VC++ coden und steh vor nem Problem.
Ich hab einen Text aus dem ich alle Zeilenumbrüche loshaben muss.

Hab schon alles mögliche probiert mit if-Abfrage (text=='\n') und mit
text.Replace('\n', '\b') bzw. text.Replace('\r\n', 'x') usw. aber iwie wills
net hinhauen (bei Replace setzt er mir außerdem Quadrate hin).

Wie macht man das denn? Hab Google auch schon befragt, aber alles was
ich da finde ist wie man ein abschließendes \n entfernt und nicht wie man die
aus dem Text herauslöscht...

Dankööö
 
Mit GNU/Linux oder UNIX haettest du das Problem nicht (sed Befehl),
sed gibt es aber auch hier als Windowsversion . (Du kannst auch sed in dein Programm einbinden)
 
Du hast vermutlich entweder ASCII-Text vorliegen, während die verwendeten Funktionen Unicode verarbeiten, oder andersrum. Prüfe mal diesbezüglich, was bei Dir auf beiden Seiten (Compiler, Daten) vorliegt!

Ansonsten machst Du genau das, was man machen muß. Wobei unter DOS/Windows immer CR+LF alias "\r\n" üblich ist.
 
Original von e5s3x
Wie macht man das denn? Hab Google auch schon befragt, aber alles was
ich da finde ist wie man ein abschließendes \n entfernt und nicht wie man die
aus dem Text herauslöscht...

was willst du denn machen?
willst du die newline vollständig entfernt haben, sodass danach statt der newline nichts mehr steht? oder willst du das newline zeichen durch z.B. ein leerzeichen ersetzen (was einfacher wäre, da dann der nachfolgende String nicht mehr nach vorne veschoben werden müsste)?
 
Ein anderer Vorschlag waere:
Du schaust nach wie der Hexcode fuer den Zeilenumbruch ist und suchst und ersetzt dann den Hexcode.
mfg
 
@HarryBoeck: Das war ne gute Idee mit dem Unicode/ASCII. Ich habe jetzt in den Optionen umgestellt auf MultiByte und siehe da, es "funktioniert". Nunja, aber nicht ganz so gut wie erhofft. Bei einem Zeilenumbruch passts, aber bei mehreren bekomme ich immer eine Fehlermeldung a la "Falscher Parameter".
Über die if Abfrage kann ichs aber auch net ausfiltern

@Heinzel: Ist im Prinzip egal, n Leerzeichen wär vollkommen ok als ersatz
@sweet: auch ne gute idee mit den Hexzeichen, aber wenns ich zB. 0x0A mit 0x20 (Leerzeichen) ersetze, bekomme ich zwar das Leerzeichen, aber auch wieder so ein Kästchen....
 
Das mit dem Kasten liegt daran das windows fuer einen Zeilenumbruch 2 Hexzahlen benoetigt und du nur ein Zeichen geloescht/ersetzt hast.
Das gleiche Problem hast du auch wenn du unter Linux im texteditor was schreibst und das dann unter Windows oeffnest.
Das Hexzeichen was du wahrscheinlich auch noch leoschen musst ist das Carriage return.
Frag brei mal, der Angeber kann es sich mit sicherheit auch nochmal aus dem Kopf schuetteln ;)
Aber wenn ich mich nich irre muesste das Asciicode 13 sein.
mfg

sw33t


p.s.:Schau mal was der Weihnachtsmann dir als ein vorzeitiges geschenk gebracht hat.
Ich will das du mich Klickst.

//edit die 2.
Du musst also nicht nur 0x0A sonder 0x0A 0x0D mit 0x20 ersetzen
 
Hehe Danke für die ASCII Tabelle, mit der hab ich mich vorhin auch schon rumgeschlagen...

Ich weiß jetzt auch warums vorhin net ging :rolleyes:

anstatt
Code:
			text.Replace(0x0A,0x20);
			text.Replace(0x0D,0x20);

hatte ich
Code:
			text.Replace(0x0A && 0x0D,0x20);
versucht *shame on me*

Ich danke euch mal wieder für eure Hilfe!
 
Zurück
Oben