字符串类型转换
- marshal_as 是 C++/CLI 中用于数据类型转换的工具,用于托管代码和非托管代码之间进行数据类型的转换
- C# 和 C++ 的字符串类型使用marshal_as相互转换
- 要使用#include <msclr/marshal_cppstd.h> 头文件,以便使用marshal_as函数进行字符串类型转换
#include <msclr/marshal_cppstd.h>
#include <iostream>
using namespace System;
using namespace msclr::interop;
int main(array<System::String ^> ^args)
{
System::String^ managedString = "Hello, World!";
std::string unmanagedString = marshal_as<std::string>(managedString);
Console::WriteLine("Managed string: {0}", managedString);
std::cout << "Unmanaged string: " << unmanagedString << std::endl;
std::string anotherUnmanagedString = "Hello from unmanaged code!";
System::String^ anotherManagedString = marshal_as<System::String^>(anotherUnmanagedString);
Console::WriteLine("Another unmanaged string converted to managed: {0}", anotherManagedString);
return 0;
}
容器类型转换
- gcnew 是 C++/CLI(托管 C++)中用于 托管堆 上分配内存的关键字,用于创建由 垃圾回收器(GC) 自动管理的托管对象。与 C++ 的 new 不同,gcnew 分配的内存无需手动释放,由 CLR 的 GC 自动回收,避免内存泄漏风险
- gcnew 返回的是对象的 句柄(Handle),用符号 ^ 表示(类似于C++的指针 *)
#include "pch.h"
#include <msclr/marshal_cppstd.h>
#include <iostream>
#include <vector>
using namespace</