sonderzeichen in string == replace,find...
-
Hallo,
wenn ich einen string habe mit sonderziechen, dann zeigt er bei find die falsche position.
z.b
do { anfang=string.find("<",0); ende=string.find(">",0); if(anfang != string::npos && ende != string::npos) { string.erase(anfang,ende);} else { break;}; } while(anfang == string::npos || ende == string::npos);wenn er diese schleife durch geht, kommt nicht die postion des < heraus sondern die postion des : (doppeltpunkt).
Das selbe hatte ich auch schon mit andere sonderzeichen.brauche ich da eine sonderform oder warum gibt er mir die falsche postion an, ich habe auch versucht mit '<', char(60) bringt alles nichts.
mfg
Bully
-
find() sollte richtig arbeiten. Aber der zweite Parameter bei erase() ist nicht die Endposition, sondern die Länge des zu löschenden Stringausschnitts.
-
Hi,
ich glaube eher nicht, das dir find die falsche Position zurueckgibt. Dein Code wird eher fehlerhaft sein.
Hier mal eine andere Version die vielleicht das gleich tut
(Problem ist ich weiss nicht exakt was getan werden soll)string str("lassedas<loeschedas>behaltedas"); string::size_type anfang = 0; string::size_type ende = 0; do { anfang = str.find("<",0); if (anfang != string::npos) { ende = str.find(">",0); if(ende != string::npos) str.erase(anfang, ende - anfang + 1); } } while (anfang != string::npos && ende != string::npos); cout << str;Knackpunkt ist, dass string::erase im zweiten Parameter nicht die Position des letzten zu loeschenden Zeichens erwartet, sondern die Anzahl der Zeichen ab dem ersten Parameter.
Gruss,
DeSoVoDaMu