Система 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.