1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

C++ strings konkatenieren?

Dieses Thema im Forum "OS X-Developer" wurde erstellt von creative7even, 05.12.05.

  1. creative7even

    creative7even Jerseymac

    Dabei seit:
    23.02.05
    Beiträge:
    454
    Hallo liebe Hackergemeinde...

    wie kann es sein dass die append-Funktion der Klasse <string> nicht vorhanden ist?

    Code:
    #include <string>
    using namespace std;
    
    ...
    
    string Class::toString() {
      return *(this->servername).append(" made a booboo");
    }
    
    ...funktioniert auf der Windose (Visual Studio), mein Apfel weigert sich... (wie lautet hier die Alternative?)

    c7.
     
  2. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Natürlich gibt's auf dem Mac auch string::append(). Zum Beispiel
    Code:
    #include <string>
    #include <iostream>
    
    using namespace std;
    
    string foo(string s) {
      return s.append(" Welt!");
    }
    
    int main()
    {
      cout << foo(string("Hallo")) << endl;
      return 0;
    }
    
    kann ich auf dem Tiger mit g++ 4.0 problemlos übersetzen. Poste doch mal Deine Fehlermeldungen.
    Ein bisschen unwohl ist mir allerdings, dass append() eine Referenz auf einen String zurückgibt, Du das aber als "echten" String weiterverarbeiten willst.
     
    #2 quarx, 05.12.05
    Zuletzt bearbeitet: 05.12.05
  3. creative7even

    creative7even Jerseymac

    Dabei seit:
    23.02.05
    Beiträge:
    454
    Hallo!

    Danke vorerst mal für die rasche Hilfe!

    Fehlermeldung lautet:
    Code:
    error: request for member `append` in `this->Class::servername`, which is of non-aggregate type `std::string*`
    
    'servername' ist ein string-pointer, deshalb wird er auch in der Methode toString() dereferenziert.

    no idea.... c7
     
  4. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Ach so. Ich glaube, Du musst das anders klammern, weil der Stern vorne zum Schluß ausgewertet wird:
    Code:
    return (*(this->servername)).append(" made a booboo");
    
    oder so:
    Code:
    return this->servername->append(" made a booboo");
    
     
    creative7even gefällt das.
  5. creative7even

    creative7even Jerseymac

    Dabei seit:
    23.02.05
    Beiträge:
    454
    :mad: ...wieder was dazu gelernt...

    vielen dank.

    c7.
     

Diese Seite empfehlen