VS2010中String^的几个常用类型转换

因为课程设计不得不用C++来写,而且底层函数字符串返回的都是unsigned char* 的,而VS2010中窗口控件中显示的字符串都是String^ ,所以整个过程基本上就是在各个类型之间进行转换,第一次用VS写程序,也是第一次接触.NET,刚开始真是被各个类型转换搞得头疼,下面总结一下用到的几个关于String^ 转换,希望以后用到的时候可以方便,也希望可以方便他人。

     1、char* 转换为String^

          char*     c = "123";

           String^  str = gcnew String(c);

     2、String^ 转换为 char* 

           首先使用命名空间   using namespace System::Runtime::InteropServices;

           String^  str="123";

           char* c =(char*)(void*)Marshal::StringToHGlobalAnsi(str);

     3、String^ 转换为double 

            这里使用Convert 类型,它是System下面的一个类型,刚开使在使用的时候以为可以跟Java里面一样,直接通过类名调用静态函数,但一直出错,后来先定义一个对象后,才能调用到方法,如果可以像Java那样调用,希望大家不吝赐教啊,

           Convert^  con;

           String^  str = "123";

            double d = con->ToDouble(str);

            补充的是,Convert里面还有很多类型的转换方法,非常丰富。

     4、double 转到String^ 也是使用Convert 类,在此不再赘述。

          最后想说的是,关于^符号,本人一直不太懂,但根据报错信息,每次定义对象的时候都使用^符号,并使用gcnew,就不报错了,个人的理解可能是自动回收内存的一个机制。

     5、unsigned char* 转String^ 类型

        

 private: String^ BYTEtoString(unsigned char* BYTEContent)
 {
	string str = "";
	stringstream ss;     //需要添加 #include <sstream>
	for(int i = 0;i < sizeof(BYTEContent)/sizeof(BYTEContent[0]);i++)   //遍历
	{
	    if(int(BYTEContent[i]) < 16)       //若该值小于16,则在前面补0
	    {
	        ss << "0";
	    }
           ss<<hex<< int(BYTEContent[i]);      //转换为16进制后添加到字符串流末尾
	}
	str = ss.str();
        String^ s =gcnew String(str.c_str());
        return s;
 }


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值