Stringlänge, buchstaben suchen und ersetzen



  • nim doch std::string

    std::string str;
    str = "dein text is hier";
    str.length();
    str.erase(...);
    str.replace(...);
    

    [url]
    http://cppreference.com/cppstring/index.html
    [/url]
    Mfg shade37337



  • Mit diesem Ausdruck

    size_t strlen(const char *a);
    

    deklarierst Du eine Funktion strlen, die einen C-String annimmt und eine Größe zurückgibt. Das willst Du sicher nicht, sondern Du willst strlen benutzen:

    size_t ergebnis = strlen(a);
    

    Lies Dir am Besten noch mal die Grundlagen zu Funktionsdefinition und -aufruf durch 😉

    BTW:
    Weiter oben, dort wo Du "zahlen" aufrufst, nach dem cin.get, hast Du offenbar verstanden wie's geht. strlen rufst Du genau so auf wie Dein "zahlen".



  • Problemfall ^^ schrieb:

    int zahlen(char *a)
    {
        size_t strlen(const char *a);
    	
    	return(NULL);
    }
    

    const char *a ist ja auch nur der Platzhalter für die Variable.

    int zahlen(char *a)
    {
        int laenge = strlen(a);
    
        return(NULL);
    }
    

    Achso, was habt ihr in eurer Schule denn bisher gelernt?



  • Vielleicht sollte man laenge auch zurückgeben.



  • @Braunstein:
    Ohne zu Wissen was "zahlen" eigentlich machen soll (zaehlen ist es offenbar nicht) fass ich die innere Funktionalität nicht an 😃



  • Braunstein schrieb:

    Vielleicht sollte man laenge auch zurückgeben.

    Wozu? 🙄 Spaß beiseite, hast ja recht:

    int zahlen(char *a)
    {
        return strlen(a);
    }
    


  • Oh stimmt... aber im buch steht halt dieses "size_t" und dieses "const"..das hat mich total durcheinander geworfen und hab den wald vor lauter bäumen nicht gesehen , wie peinlich 😕
    im buch wird halt nicht erklärt warum const und warum size_t...

    ach in der schule haben wir bisher nur über variablen, switch und case, Arrays, grundrechenarten mit brüchen und sind halt nun bei strings, nicht wirklich viel geschafft...

    aber auf jedenfall vielen dank für eure hilfe (:



  • Du kannst ja auch size_t verwenden.

    size_t zahlen(char *a)
    {
        size_t res = strlen(a);
        return res;
    }
    

    Wenn es unbedingt const char* sein soll, geht strlen aber nicht so einfach, da es einen nichtkonstanten char erwartet. Dies ist bei mir der einzige Fall wo ich je einen const_cast eingesetzt habe.

    size_t zahlen(const char *a)
    {
        size_t res = strlen(const_cast<char*>(a));
        return res;
    }
    

    Eine Alternative wäre hier eine eigen strlen-Funktion zu schreiben (siehe anderer Thread).



  • Braunstein schrieb:

    Wenn es unbedingt const char* sein soll, geht strlen aber nicht so einfach, da es einen nichtkonstanten char erwartet. Dies ist bei mir der einzige Fall wo ich je einen const_cast eingesetzt habe.

    Dürfte ich Dich hier auf ISO/IEC 9899:1999 Punkt 7.21.6.3 The strlen function verweisen? 😉

    (Im ISO/IEC 14882:1998 ist die Signatur btw auch mit const angegeben)



  • Da hast du recht.
    Bei einem meiner Compiler (ist schon ne Weile her) war das nicht const. Das hat sich wohl irgendwie bei mir festgesetzt.
    Ich hab gerade mal nachgeschaut und festgestellt, dass meine derzeitigen Compiler das auch alle const char* haben.


Anmelden zum Antworten