Funktion zur Stringbearbeitung



  • Ws sind denn das für Funktionen? Die Aufgabenstellung ist doch nur ein Dreizeiler.



  • Michael E. schrieb:

    Ws sind denn das für Funktionen? Die Aufgabenstellung ist doch nur ein Dreizeiler.

    Wäre dann mal Cool das du uns die auch zeigst, damit wir was lernen können, mal sehen ob du meiner 10 monatigen C++ Erfahrung was vormachen kannst 😃 😃



  • Fragesteller schrieb:

    wobei ich eigentlich von korrekter Eingabe ausgehen kann,

    Wenn das so ist dann reicht auch das:

    void StripSpaces( std::string& str ) 
    {
         str = str.assign(str,1,str.size()-2);
         str.erase(str.find("=") - 1,1);
         str.erase(str.find("=") + 1,1);
    }
    

    Extra in 3 Zeilen für Daniel 😃 😃



  • Freak_Coder schrieb:

    Fragesteller schrieb:

    wobei ich eigentlich von korrekter Eingabe ausgehen kann,

    Wenn das so ist dann reicht auch das:

    void StripSpaces( std::string& str ) 
    {
         str = str.assign(str,1,str.size()-2);
         str.erase(str.find("=") - 1,1);
         str.erase(str.find("=") + 1,1);
    }
    

    Diese Funktion erfüllt aber nicht die an sie gestellte Aufgabe :p.

    Caipi



  • Sorry, hab ich gar nicht dran gedacht in der Hektik.

    Um den ersten String " bla blub = blubbb bla " in den String "bla blub=blubbb bla" umzuwandeln, reicht schon diese Funktion:

    void StripSpaces(string &str)
    {
        str.erase(0, str.find_first_not_of(" "));
        str.erase(str.find_last_not_of(" ") + 1);
    
        while(str.find(" = ") != string::npos) str.replace(str.find(" = "), 3, "=");
    }
    

    Natürlich ist sie nicht optimal, weil str.find() zwei Mail aufgerufen wird (wobei ich mir nicht sicher bin, ob das nicht wegoptimiert werden kann). Aber es ging ja jetzt um die Länge und schneller als eure Funktionen dürfte das hier schon sein.



  • Freak_Coder schrieb:

    Extra in 3 Zeilen für Daniel 😃 😃

    Meinst du mich?



  • Caipi schrieb:

    Diese Funktion erfüllt aber nicht die an sie gestellte Aufgabe :p.

    Hmmm, Echt ???
    Bei mir tut sie es, es sei denn ich habe die Aufgabenstellung nicht verstanden... 😕

    Was macht sie denn falsch ???



  • @Michael E. : Upps 😃

    Wie kommt den Daniel her 😕 Meinte natürlich dich 👍



  • Vielleicht assoziierst du E. mit Daniel E.



  • Zu deiner Funktion: Sie sollte auch noch hier funktionieren: "foo bar = blubb = bla ".



  • Freak_Coder schrieb:

    Caipi schrieb:

    Diese Funktion erfüllt aber nicht die an sie gestellte Aufgabe :p.

    Hmmm, Echt ???
    Bei mir tut sie es, es sei denn ich habe die Aufgabenstellung nicht verstanden... 😕

    Was macht sie denn falsch ???

    Ich habe - beim ersten Überfliegen des Textes - die Funktion so verstanden, dass sie folgenden String

    [b]"[/b] <variable_anzahl_leerzeichen_> bla blub <variable_anzahl_leerzeichen_> = <variable_anzahl_leerzeichen_>blub blaaaaa <variable_anzahl_leerzeichen_>[b]"[/b]
    

    in einen String der Form

    [b]"[/b]bla blub=bla bluuuuuuub[b]"[/b]
    

    umwandeln soll, so dass die Anführungszeichen erhalten bleiben.
    (Habe nämlich den Code des OP beim ersten Überfliegen mir nicht angeschaut [...])

    Sorry, mein Fehler...

    Caipi



  • Michael E. schrieb:

    Zu deiner Funktion: Sie sollte auch noch hier funktionieren: "foo bar = blubb = bla ".

    Ja, wenn man davon nicht ausgeht das ein falscher String übergeben wird, aber wie ich schon geschrieben habe gilt die Funktion nur für die "korrekten" Strings...

    Ansonsten würde ja meine 1. Funktion gelten, aber die ist ja im gegensatz zu deiner nen kleines Spielkind 😃
    jetzt habe ich immerhin noch 2 neue find() funktionen (durch deine func()) kennengelernt, komisch wie konnte ich die in der Reference übersehen haben 😃

    Achja, stimmt da gibts ja noch ein Daniel E. :p Bestimmt deswegen.



  • @Caipi: Tatsächlich, es wird nur das erste Vorkommen von " = " berücksichtigt.

    Freak_Coder: Gib mal bitte ein Beispiel, bei der meine ein Problem hat. Meinst du etwas so was: "foo= bar"?

    [EDIT] Wenn ja, dann macht das durch die getrennte Berücksichtigung von "= " und " =" noch eine Zeile mehr.



  • Gib mal bitte ein Beispiel, bei der meine ein Problem hat.

    --> Hab ich das irgendwo behauptet 😃

    @Michael: Ich glaube wir verstehen uns irgendwie falsch. Ich meinte ja das deine Funktion ja eh besser als meine 1. ist. 😃
    Wenn man davon ausgeht das ne variable anzahl von Leerzeichen am Anfang am Ende und am Gleichheitszeichen sein kann 😉



  • Alle drei Fälle werden von meiner behandelt.


Anmelden zum Antworten