C ++ CLI System.String ^ в MFC LPCTSTR - PullRequest
9 голосов
/ 20 марта 2012

Как преобразовать Систему (.net) C++\CLI String^ в строку MFC C ++ LPCTSTR.

Очень легко получить LPCTSTR в String^, но пока ничего не найдено при его выполнении наоборот.

Ответы [ 2 ]

13 голосов
/ 20 марта 2012

Если у вас 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 ++

3 голосов
/ 20 марта 2012

Возможно, вы захотите попробовать Marshal :: StringToHGlobalUni , Marshal :: StringToHGlobalAuto или Marshal :: StringToHGlobalAnsi .

Помните, что выделенные неуправляемые строки нужно будет освободить с помощью Marshal :: FreeHGlobal .

...