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


Anmelden zum Antworten