System.String转换成char 或wchar

本文详细介绍了MSDN中关于C#字符串操作的相关API,包括如何将字符串转换为字符数组,使用StringToHGlobalAnsi方法进行内存管理,以及System.String^与System.String*的区别。文章还提供了示例代码帮助开发者更好地理解和应用这些API。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. MSDN用法

MSDN链接地址: ms-help://MS.MSDNQTR.v90.chs/dv_vccore/html/385da01b-5649-4543-8076-e3e251243ff0.htm

#include <vcclr.h>
using namespace System;

bool To_string( String* source, string &target )
{
const __wchar_t __pin * wch = PtrToStringChars( source );
int len = (( source->Length+1) * 2);
char *ch = new char[ len ];
bool result = wcstombs( ch, wch, len ) != -1;
target = ch;
delete ch;
return result;
}

int _tmain(int argc, _TCHAR* argv[])
{
System::String* strSys("aaa10a");

string strTemp;

if(To_string(strSys, strTemp))
{
printf("%s \n", strTemp.c_str());
}

getchar();

return 0;
}


2. StringToHGlobalAnsi方式

StringToHGlobalAnsi将String的内容复制到本机堆,此方法需要动态分配堆内存。

using namespace System;

using namespace System::Runtime::InteropServices;
System::String * str = S"Hello world\n";
char* str2 = (char*)(void*)Marshal::StringToHGlobalAnsi(str);
printf(str2);

3. System.String^与System.String*区别
两者没有区别,只是vs环境配置的问题。
默认情况下书写成System.String^,此时项目的 配置属性->常规->公共语言运行库支持项选择为: 公共语言运行库支持(/clr)
System.String*时配置选择: 公共语言运行库支持,原来的语法 (/clr:oldSyntax)
由此看来*是老旧的叫法,呵呵


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值