C++ CLI System.String^ для MFC LPCTSTR

Как бы я конвертировать систему (.net) C++\CLIString^ в 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.

Другие вопросы по тегам