Comment puis-je convertir un System::String^ à const char*?
Je suis de développer une application en C++/CLI et un fichier csv d'écriture de la bibliothèque dans le code non managé que je veux utiliser de la géré la partie. Donc ma fonction ressemble à quelque chose comme ceci:
bool CSVWriter::Write(const char* stringToWrite);
...mais j'ai vraiment du mal à convertir mon brillant System::String^ en quelque chose de compatible. Au fond, j'espérais appel en faisant quelque chose comme:
if( m_myWriter->Write(String::Format("{0}",someValueIWantToSave)) )
{
//report success
}
double possible de comment faire pour convertir System::String const char*?
OriginalL'auteur Jon Cage | 2009-07-08
Vous devez vous connecter pour publier un commentaire.
De Dev Hangar.
Manquant Marshal::FreeHGlobal(...); ce qui peut entraîner une fuite de mémoire.
puis après, une meilleure version de mon code.
OriginalL'auteur mcandre
Comme mcandre mentionne, Marshal::StringToHGlobalAnsi() est correct. Mais n'oubliez pas de libérer le nouvellement allouée ressources avec Marshal::FreeHGlobal(), lorsque la chaîne n'est plus en usage.
Alternativement, vous pouvez utiliser le msclr::pia::marshal_as modèle pour créer la ressource de chaîne et de libérer automatiquement lors de la sortie de l'appel de la ressource.
OriginalL'auteur Steve Guidi
Il y a la liste de ce que les types de besoin de conversion dans le aperçu du rassemblement en C++.
OriginalL'auteur Jon Cage