Se vuoi un array Managed basta fare "stringa".ToCharArray();
Se invece vuoi un reale puntatore è un pò più incasinato... Purtroppo non ho mail lavorato col C++ Managed, ma la funzione Marshal.StringToHGlobal???() dovrebbe funzionare come in C#...
Questo è un esempio in C#:
Codice:
IntPtr ptrANSI = IntPtr.Zero;
IntPtr ptrUnicode = IntPtr.Zero;
try
{
// Il char* del C++
char* pippo = (char*)(ptrANSI = Marshal.StringToHGlobalAnsi("pippo ANSI"));
// Il wchar_t* del C++
char* pluto = (char*)(ptrUnicode = Marshal.StringToHGlobalUni("pluto UNICODE"));
// usa pippo & pluto
}
catch
{ }
finally
{
if(ptrANSI != IntPtr.Zero)
Marshal.FreeHGlobal(ptrANSI);
if(ptrUnicode != IntPtr.Zero)
Marshal.FreeHGlobal(ptrUnicode);
}
PS: potresti provare anche l'oggetto StringBuilder che nelle chiamate alla API di sistema può sostituire il char*
Ciao