PDA

View Full Version : [C++] Conversione di managed string in array di char


darkestsky
16-03-2008, 09:32
Ciao a tutti,

Sto cercando un modo semplice per convertire stringhe "managed" in array di caratteri in Visual C++ 2005 Express Edition (Windows Forms application). Qualche idea?

kernel::panic
16-03-2008, 19:59
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#:
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 ;)

darkestsky
19-03-2008, 22:39
Grazie...