将 System::String^ 转换为 unsigned char*
Posted
技术标签:
【中文标题】将 System::String^ 转换为 unsigned char*【英文标题】:Convert System::String^ into unsigned char* 【发布时间】:2018-02-12 07:07:28 【问题描述】:我有一个从 C# 项目调用的 C++-Dll。在函数中,我需要一个字符串作为参数,然后将其转换为无符号字符 *。我正在使用 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】:你可以用这个代码做到这一点:
using namespace System::Runtime::InteropServices;
const unsigned char* str = (const unsigned char*) (Marshal::StringToHGlobalAnsi(managedString)).ToPointer();
还要记住,当字符串不再使用时,用 Marshal::FreeHGlobal() 释放新分配的资源,否则会发生内存泄漏。
【讨论】:
谢谢。我需要一个 unsigned char*,所以我只是将 const 更改为 unsigned,现在它可以工作了。以上是关于将 System::String^ 转换为 unsigned char*的主要内容,如果未能解决你的问题,请参考以下文章
C++ .NET 将 System::String 转换为 std::string
无法将对象类型“System.String[*]”转换为“System.String[]”
如何将 System::String^ 转换为 std::string?
将 CString 数组转换为 System::String