Konvertierung von char* zu String ^ und umgekehrt



  • Guten Abend,

    wie der Titel schon oben sagt, wie kann man von char* zu String ^ und umgekehrt konvertierten.

    String ^Test; 
     Test=F1->GetWorkPath();// Funktion GetWorkPath() gibt char* zurück
    
    String ^Test;
     char *Test2; 
     Test2 = Test;
    


  • char* String_to_char(System::String ^ s)
    {
        int len=s->Length;
        char*data=new char[len+1];
    
        int i;
        for(i=0;i<len;i++)
        {
            data[i]=s[i];
        }
        data[i]='\0'
    
        return data;
    }
    
    System::String^ char_to_String(char* c)
    {
        System::String ^ s=gcnew System::String(c);
        return s;
    }
    

    Wobei von sowas ja eher abzuraten ist...
    Man soll ja nicht managed und nativen Code mischen 😉

    EDIT:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-158664.html



  • Dein Code ist quark... er ist mühsam zu gebrauchen mit den new / delete.

    @OP: guck in der FAQ, es gibt dort ein Beitrag für genau dein Problem.



  • Hallo

    ich würde es mal über die Marshal Class probieren

    folgenden include in der h-Datei gemacht:

    #include <msclr\marshal.h>

    unter Namespace folgenden Eintrag:

    using namespace msclr::interop;

    Convert char* to String^:
    Test = marshal_as<String ^>(F1->GetWorkPath());

    Convert String^ to char*:
    marshal_context^ convert = gcnew marshal_context();
    Test2 = (char*)convert->marshal_as<const char *>(Test);

    mfg
    biedego


Anmelden zum Antworten