Dev Faq
7
votes

Comment convertir un système: String ^ to const Char *?

Je développe une application en C ++ / CLI et je dispose d'une bibliothèque de fichiers de fichier CSV dans le code non géré que je souhaite utiliser depuis la partie gérée. Donc, ma fonction ressemble à ceci comme suit:

if( m_myWriter->Write(String::Format("{0}",someValueIWantToSave)) )
{
    // report success
}

char c++-cli

1 commentaires

duplicaté possible de Comment convertir System :: String to Cons Char *?


3 Réponses :


13
votes
using namespace System::Runtime::InteropServices;
const char* str = (const char*) (Marshal::StringToHGlobalAnsi(managedString)).ToPointer();
From Dev Shed.

1 commentaires

Maréchal manquant :: freehglobal (...); qui peut entraîner une fuite de mémoire.



11
votes

comme Mcandre mention , Marshal :: stringtohglobalansi () est correct. Mais n'oubliez pas de libérer la ressource nouvellement allouée avec Maréchal :: FreeHGlobal () , lorsque la chaîne n'est plus utilisée.

Alternativement, vous pouvez utiliser MSCLR :: Interop :: Marshal_as Modèle pour créer la ressource à chaîne et le libérer automatiquement lorsque l'appel quitte la portée de la ressource.


0 commentaires

1
votes

Il y a une liste de quels types ont besoin quelle conversion dans le aperçu du marshalling dans C ++ .


0 commentaires

Articles qui pourrait vous intéresser :

c ++ Créer un tableau de caractères à partir d'une chaîne variable passée en tant que paramètre de fonction
Comment échanger deux caractères pour un caractère en C?
Constantes de nouvelle ligne en C
C ++ Passer des octets de char * à un BYTE *
© 2020 www.devfaq.fr - Licensed under  cc by-sa 3.0  with  attribution required.