在VC++.net中将System::String __gc* 转换为本机的char *或wchar_t *的三种方法

在VC++.net中将System::String __gc* 转换为本机的char *或wchar_t *的三种方法

方法一:

// compile with: /clr
//#using <mscorlib.dll>
//using namespace System;
//using namespace System::Runtime::InteropServices;

String __gc* strHello = S"Hello";
const char* pszHello = (const char*)(Marshal::StringToHGlobalAnsi(strHello)).ToPointer();
// 在此使用 pszHello .......

Marshal::FreeHGlobal(System::IntPtr((void*)pszHello));//释放

方法二:

// compile with: /clr
//#include < vcclr.h >
//#using < mscorlib.dll >
//sing namespace System;

String __gc* strHello = S"Hello";
const wchar_t __pin* pwszHello = PtrToStringChars(strHello);
char* pszHello = (char *)malloc((strHello->Length + 1) * 2);
wcstombs(pszHello, pwszHello, (strHello->Length + 1) * 2);
// 在此使用 pszHello .......

free(pszHello);//释放

方法三:

// compile with: /clr
//#using <mscorlib.dll>
//using namespace System;
String __gc* strHello = S"Hello";
wchar_t* pwszHello = (wchar_t *)malloc(strHello->Length + 1);
for(int i=0;i<strHello->get_Length();i++)
{
  pwszHello[i] = strHello->get_Chars(i);
}

// 在此使用 pszHello .......

free(pwszHello);//释放
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值