将 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()释放新分配的资源,当字符串不再被使用时,否则你会发生内存泄漏。
我有一个从 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()释放新分配的资源,当字符串不再被使用时,否则你会发生内存泄漏。