将 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

如何将扩展 ascii 转换为 System.String?

将 System::String^ (C# 字符串)转换为 C++ std::string [重复]