string splitten
-
ich habe ein string der Form: 2 \n 3 \n 4 \t 5 \n
nun möchte ich aus dieser die ersten 2 Zeilen löschen und sie durch andere ersetzen wie mach ich das?
Mit stringstream funktioniert das nicht so recht und nach "\n" suchen position merken und dann bis dort hin löschen klappt auch nicht so ganz
-
Du machst dir einen neuen String mit den von dir gewünschten beiden Zeilen. Dann suchst du im alten String das Ende der zweiten Zeile und kopierst ab da in den neuen String. Falls die länge der Zeilen nicht variieren soll, kannst du die alten Zeilen natürlich auch direkt überschreiben.
-
Letzteres bspw:
std::string str("2\n 3\n 4\n 5\n");/// Dein String. str.replace(0 , 5, "6\n 7\n" /*Die neuen ersten beiden Zeilen*/);Oder wenn gar die Nummer der Zeile variabel ist schreib dir 'ne Funktion (oder gibts die schon ?).
int find_nchar(std::string str, char c, int amount) { int rval(0); while(amount && rval != str.length()) { if(str.at(rval) == c) --amount; ++rval; } return rval; } //... std::string str("2\n 3\n 4\n 5\n"); str.replace(0, find_nchar(str, '\n', /*z.B.*/ 3), "1\n 2\n 3\n");Edit: Hab' std:: noch angehängt, hab's vergessen.