str_replace in c++?
-
Hallo
In php gibt es die Funktion str_replace um bestimmte zeichen in einem string auszutauschen (z.B. kann man ein, mit einem . austauschen oder sonstiges)
In c scheint es diese Funktion aber nicht zu geben obwohl php und c recht ähnlich sind.
Gibt es da eine alternative?
-
Warum fragst du zu C im C++ Forum? *kopfschüttel*
Wenn du vernünftiges C++ programmieren würdest, würdest du einfachdie std::string Klasse benutzen, die natürlich eine replace Methode hat.
-
wieso ist eigentlich Artchi immer so unhöflich?
-
antwort: sowas hat c nicht. musst du selber bauen. grund: funktionen auf c strings koennen nicht von beliebig vergroesserbaren strings ausgehen.
ich habe irgendwo mal drei funktionen gepostet, aber die find ich grad im board nicht. hier sind sie nochmal:#include <stdio.h> #include <string.h> int strdel(char *s, int len, int a, int b) { char *p, *q; if ((a < 0) || (b < 0)) return -1; if ((a > len) || (b > len)) return -1; if (a > b) return -1; p = s+a; q = s+b; while (*q) *p++ = *q++; *p = 0; return (p-s); } int strins(char *s, int len, char *x, int i) { char *p, *q; int ls, lx; ls = strlen(s); lx = strlen(x); if ((i < 0) || (i+lx >= len)) return -1; if (ls+lx >= len) return -1; p = s+ls; q = s+ls+lx; while (p >= s+i) *q-- = *p--; p = s+i; while (*x) *p++ = *x++; return (ls+lx); } int strrepl(char *s, int len, char *search, char *replace) { char *p, *q; int slen, alen; slen = strlen(s); alen = strlen(search); p = s; do { q = strstr(p, search); if (!q) break; strdel(q, len-(q-s), 0, alen); strins(q, len-(q-s), replace, 0); p = q+1; } while (p < s+slen); return 0; } int main(void) { char quelle[20] = "foo.bar,baz"; int qlen = sizeof quelle; printf("%s\n", quelle); strdel(quelle, qlen, 4, 7); printf("%s\n", quelle); strins(quelle, qlen, "bla", 4); printf("%s\n", quelle); strrepl(quelle, qlen, "a", "oe"); strrepl(quelle, qlen, "oo", "u"); printf("%s\n", quelle); return 0; }
-
kann mir jemand diesen code erklären
-
arbeite dich doch durch {o;
einzeln die zeilen betrachten, dann verstehst du auch alles
kannst dir ja auch eigene comments zu schreiben