system::string^^ konvertieren mit c.marshal_as
-
Hallo Community
ich konvertiere mir ein c# String in ein const char*:const char* AssemblyUtilities::convertStringToChar(::System::String ^ pToConvert) { //... //... marshal_context c; return return c.marshal_as<const char*>(pToConvert); }
leider bekomme ich nur Grütze zurück sprich der Pointer hat keine korrekten Werte mehr
wenn ich es mitconst char* AssemblyUtilities::convertStringToChar(::System::String ^ pToConvert) { //... //... marshal_context c; std::string *test =new std::string(c.marshal_as<std::string>(pToConvert)); return test->c_str(); }
funktioniert es zwar wie es soll, ich habe jedoch nen Speicherloch,
kann mir einer erklären wir man das richtig macht ?
vielen dank
-
Der Zeiger ist den dem Augenblick, wo die Funktion zurückkommt nicht mehr gültig.
Du musst entweder den String zuvor kopiert haben (z.B. mit "strdup") oder Du verwendest z.B: std::string.
Beachte auch, dass bei der Konvertierung zu "char*" Daten verloren gehen können. Ich würde eher "wchar_t" bzw. std::wstring verwenden, wenn möglich.
-
ok
vielen dank für die schnelle Antwort
mfg