C++ CLI System.String^ для MFC LPCTSTR
Как бы я конвертировать систему (.net) C++\CLI
String^
в MFC C++ LPCTSTR
строка.
Это очень легко получить LPCTSTR
в String^
, но пока ничего не нашел при этом наоборот.
2 ответа
Решение
Если у вас Visual Studio 2008 или выше, вы можете сделать это с помощью библиотеки маршалинга C++/CLI, например, так:
#include <msclr\marshal.h>
using namespace System;
using namespace msclr::interop;
...
String^ cliString;
marshal_context context;
LPCTSTR cstr = context.marshal_as<const TCHAR*>(cliString);
Дополнительная информация о маршалинге между типами в MSDN: обзор маршалинга в C++
Вы можете попробовать Marshal:: StringToHGlobalUni, Marshal:: StringToHGlobalAuto или Marshal:: StringToHGlobalAnsi.
Помните, что выделенные неуправляемые строки нужно будет освободить с помощью Marshal:: FreeHGlobal.