将 System::String^ 转换为 unsigned char*

Convert System::String^ into unsigned char*

我有一个从 C# 项目调用的 C++-Dll。在一个函数中,我需要一个字符串作为参数,然后将其转换为 unsigned char*。我正在使用 System.String^ 将 C#-String 转换为 C++-String。如何在 C++ 中将 String^ 转换为 unsigned char *?

我试过了,但没用:

void Function(String^ userInput)
{
    unsigned char* msg;
    strcpy((char*)msg, userInput); // Doesn't work    
}

你可以用这个代码来完成:

using namespace System::Runtime::InteropServices;
const unsigned char* str = (const unsigned char*) (Marshal::StringToHGlobalAnsi(managedString)).ToPointer();

另外记得用Marshal::FreeHGlobal()释放新分配的资源,当字符串不再被使用时,否则你会发生内存泄漏。