我有一个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
}
答案 0 :(得分:2)
您可以使用以下代码执行此操作:
using namespace System::Runtime::InteropServices;
const unsigned char* str = (const unsigned char*) (Marshal::StringToHGlobalAnsi(managedString)).ToPointer();
还记得用Marshal :: FreeHGlobal()释放新分配的资源,当字符串不再使用时,否则你会有内存泄漏。