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

时间:2018-02-12 07:07:28

标签: string c++-cli 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    
}

1 个答案:

答案 0 :(得分:2)

您可以使用以下代码执行此操作:

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

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