Система CLI C++.Строка^ в 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++
вы можете попробовать Маршал:: StringToHGlobalUni, Маршал:: StringToHGlobalAuto или Маршал::StringToHGlobalAnsi.
помните, что выделенные неуправляемые строки должны быть освобождены с помощью Маршал::FreeHGlobal.