String bearbeiten
-
Hallo
hab folgendes Problem
Ich habe z.B. eine String eingelesen "abc acd abc"
Und ich will jetzt dass anstatt ab xxx steht also "xxxc acd xxxc"wie kann man das machen?
Sitze schon den ganzen tag daran.
-
Hey,
also ich hab das bisher immerso gemacht vill gib es ja auch schon ne besser
Möglichkeit wer weis, aber auf jeden Fall geht diese Methode:#include <iostream> #include <conio.h> #include <string> using namespace std; int main() { cout<<"String \n ------------------- \n"; string a = "abc cab abrtabzeabertab",b="ab",c="xxx"; cout << " > " <<a<<endl; while(true) { int pos,l; l = b.length(); pos = a.find(b, 0); if(pos==-1) { break; } a.replace(pos, l, c); } cout << " > " <<a; getch(); }
EDIT:
Das ist ja C srry hab nur String bearbeiten gelesen und blind ins Blaue
geantwortet.
-
ich muss sagen bin anfänger in c
wie ich sehe hast du dass in c++ geschrieben oder?
-
könntest du mir pls das in c helfen?
-
Ja mir ist erst eben aufgeffalen das dass der Falsche Bereich ist hab nur String bearbeiten gelsen und geantwortet...
Musst ma schauen in wie weit dir der Code hilft.
-
ok thx
-
Nja guck halt erstmal wie oft "ab" in dem String vorkommt ...
int count = 0; for (size_t pos = 1; pos < strlen(my_string); pos++)if (my_string[pos] == 'b' && my_string[pos - 1] == 'a') count++;
... so ... und count * 1 ('ab' = 2 'xxx' = 3; 3 - 2 = 1) größer muss der neue array sein ... dann gehst du einfach hin und malloc nen neuen speicher ... packst den string rein ... und fertig
-
hier ist was von unserem lieben 'vista':
http://www.c-plusplus.net/forum/viewtopic-var-t-is-179950-and-start-is-8.html
-
Ich würde es ja so machen:
#include <stdlib.h> #include <stdio.h> #include <string.h> int main() { //ACHTUNG: Buffer gross genug waehlen! ;) char str[20] = "abc adc abc"; char old_str[] = "ab"; char new_str[] = "xxx"; char* pos; //Finde alle Vorkommen von "ab" while ((pos = strstr(str, old_str)) != NULL) { //Falls noetig, Rest des Strings weit genug nach hinten schieben memmove(pos + strlen(new_str), pos + strlen(old_str), strlen(pos + strlen(old_str)) + 1); //Dann neuen Teilstring einfuegen memcpy(pos, new_str, strlen(new_str)); } }
Nicht hauen!
-
ICH DANKE EUCH GANZ HERZLICH FÜR DIE SCHNELLEN ANTWORTEN!!