System::String- wie kann ich einen String "anhängen"?



  • Hi,

    wie funktioniert das bei System::String Objekten?

    So scheinbar nicht, da erhalte ich einen:

    (...) : error C2297: '+=': Ungültig, da der rechte Operand vom Typ 'System::String __gc *' ist
    (...) : error C2845: '+=': Zeigerarithmetik kann nicht an einem __gc-Zeiger 'System::String __gc *' durchgeführt werden

    void SendFile(String *filename)
    {
    String *path = new String("C:\\test");
    path+=filename;
    
    (...)
    

    Funktioniert leider nicht- warum?



  • In managed C++ ist dies leider noch sehr umständlich... du musst von "Hand" die "Concat" Methode aufrufen...

    String::Concat(S"C:\\test", filename);
    

    PS: Du solltest *jeden* managed String mit eine "S" als prefix versehen, da Du Dir sonst unnötigen Convertierungs-Code einhandelst!



  • Vielen Dank!
    Jetzt weiss ich auch was das mit dem S immer soll...concatenate...warum kommt mir das so bekannt vor 😉



  • Du solltest auch nicht versuchen Adressen zu addieren.
    Es müsste schon eher so aussehen:

    void SendFile(String *filename)
    {
    String *path = new String("C:\\test");
    *path+=*filename;
    

    Gruß charlie



  • 1. Du hast vergessen ein "S" vor den String zu setzen
    2.

    error C2676 schrieb:

    binary '+=' : 'System::String' does not define this operator or a conversion to a type acceptable to the predefined operator

    3. Du kannst selber in den IL reinschauen und wirst festellen, dass es tatsächlich keinen "String::op_add" gibt!
    4. Das es in C# (2002/3) geht hängt nur damit zusammen, dass der C#-Compiler automatisch aus einen "+" ein "Concat" macht!



  • Schon gut. Ich wollte ihm nur klarmachen, dass er einen grundlegenden Fehler in
    der Syntax hat. Wollte deine Lösung keineswegs in Frage stellen.



  • Ich wollte Dein Kommentar ja auch nicht in Frage stellen, sondern nur zeigen, das es so nicht geht 😉
    PS: Es handelt sich nicht um "Zeiger" sondern um "Referenzen" auf GC-Objekte 😉


Anmelden zum Antworten