C++ CLI du Système.String^ pour MFC LPCTSTR
Comment puis-je convertir un Système de (.net) C++\CLI
String^
dans une MFC C++ LPCTSTR
chaîne.
Il est très facile d'obtenir une LPCTSTR
en String^
, mais jusqu'à présent rien trouvé sur le faire dans l'autre sens.
notez que LPCTSTR est juste un pointeur de char, donc peut-être que vous préférez convertit une Chaîne de CString ou std::string, puis obtenir le pointeur de sorte que vous n'avez pas à traiter avec la gestion mémoire
OriginalL'auteur Landin Martens | 2012-03-20
Vous devez vous connecter pour publier un commentaire.
Si vous avez Visual Studio 2008 ou au-dessus, vous devriez être capable de faire cela en utilisant le C++/CLI marshaling de la bibliothèque, comme suit:
Plus d'informations sur le regroupement entre les types sur MSDN: Aperçu du Regroupement dans C++
Je viens de vous sur votre idée judicieuse, ce qui avait glissé mon esprit. Merci!
Quelle est la différence entre ce maréchal par rapport au maréchal dans l'autre réponse?
Outre une meilleure sémantique, à l'aide de
marshal_context
signifie que la chaîne alloué est détruit lorsque le contexte est détruit. L'appel deMarshal::StringToHGlobalAuto
, d'autre part, vous oblige àFreeHGlobal
la chaîne renvoyée.OriginalL'auteur Amy Sutedja
Vous pourriez vouloir essayer Marshal::StringToHGlobalUni, Marshal::StringToHGlobalAuto ou Marshal::StringToHGlobalAnsi.
Rappelez-vous la répartition de la non géré les cordes doivent être libérés avec Marshal::FreeHGlobal.
OriginalL'auteur Botz3000