Zeichen im String ersetzen
-
Hi Leute,
ich habe in C++ einen String "TEST1#*TEST2500#*TEST34#*TEST4". Die Zeichen #* möchte ich durch einen Zeilenumbruch ersetzen, so dass der String später in einer Datei oder Vector so gespeichert werden kann:
TEST1
TEST2500
TEST34
TEST4Kann mir jemand einen Tipp geben wie ich das programmieren kann.
Vielen Dank in voraus.
xthing
-
Du suchst nach "#", fügst an der Fundstelle ein Zeilenumbruch ein ("\n") und löschst die gefundene Zeichenfolge "#".
-
-
#include <iostream> #include <string> #include <algorithm> using namespace std; int main() { string v = "TEST1#*TEST2500#*TEST34#*TEST4"; /** * find liefert die Position des ersten Vorkommens der übegebenen * Zeichenkette. Da diese ersetzt wird ist es nicht notwendig den * Bereich der durchsucht werden soll explizit anzugeben. Wenn kein * Fund vorliegt liefert die Funktion find string::npos zurück. Mit * Hilfe von replace(p, n, s) lässt sich die Zeichenkette an der * Position p bis zur Position p+n mit dem String s erzetzen. */ int p; while ((p = v.find("#*")) != string::npos) v.replace(p, 2, "\n"); cout << v << endl; return 0; /** * Ausgabe * TEST1 * TEST2500 * TEST34 * TEST4 */ }
-
ich hab auch so ein problem

ich hab ein string, wo ich alle umlaute (äüöÄÜÖ...) ersetzen will. ich komm nicht weiter. kann mir da keiner helfen

-
Da kannst du die selbe Konstruktion wie oben anwenden:
while(p=s.find("Ä") != string::npos) s.replace(p,1/*Länge von "Ä"*/,"Ae");wenn du mehrere Umlaute und Sonderzeichen suchen/ersetzen willst, kannst du sie auch in einer map<> zusammenfassen:
map<string,string> ersatz; ersatz["ä"] = "ae"; ersatz["ö"] = "oe"; ... for(map<string,string>::iterator pos=ersatz.begin();pos!=ersatz.end();++pos) { size_t spos; while((spos = str.find(pos->first)) != string::npos) str.replace(spos,pos->first.size();pos->second()); }