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

  1. 云栖社区>
  2. 博客>
  3. 正文

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

laowan 2015-04-24 10:15:35 浏览330
展开阅读全文
因为课程设计不得不用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;
 }


网友评论

登录后评论
0/500
评论
laowan
+ 关注