Как мне преобразовать System :: String ^ в const char *?

Я разрабатываю приложение на C ++ / CLI и имею библиотеку для записи файла csv в неуправляемом коде, который я хочу использовать из управляемой части. Итак, моя функция выглядит примерно так:

bool CSVWriter::Write(const char* stringToWrite);

... но я действительно изо всех сил пытаюсь преобразовать свой блестящий System :: String ^ во что-то совместимое. В основном я надеялся позвонить, сделав что-то вроде:

if( m_myWriter->Write(String::Format("{0}",someValueIWantToSave)) )
{
    // report success
}
 Ben Voigt30 мар. 2015 г., 01:51
возможный дубликатhow to convert System::String to const char*?

Ответы на вопрос(3)

Решение Вопроса
using namespace System::Runtime::InteropServices;
const char* str = (const char*) (Marshal::StringToHGlobalAnsi(managedString)).ToPointer();

Дев Шед.

 24 авг. 2010 г., 17:59
@Cedrik, тогда опубликуй лучшую версию моего кода.
 Jon Cage08 июл. 2009 г., 16:40
+1 Принято: Большое спасибо!
 20 авг. 2010 г., 15:30
Пропавший маршал :: FreeHGlobal (...); что может привести к утечке памяти.

mcandre упоминает,Marshal :: StringToHGlobalAnsi () верно. Но не забудьте освободить недавно выделенный ресурс с помощьюMarshal :: FreeHGlobal ()когда строка больше не используется.

Кроме того, вы можете использоватьmsclr :: Interop :: marshal_as шаблон для создания строкового ресурса и его автоматического освобождения, когда вызов выходит из области действия ресурса.

Ваш ответ на вопрос