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 mischenEDIT:
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