关闭

[转]CString、char*、string、int、_bstr_t、CTime、COleDateTime相互转换,判断一个字符串是一个浮点数

694人阅读 评论(0) 收藏 举报

 转http://www.cnblogs.com/xtry/articles/44433.aspx

 

 #include

 using namespace std; 

 #include

{   

   CString strCString="ABC";   

 

   char strchar[256],*pstr;       

 

   pstr=(LPSTR)(LPCTSTR)strCString;                  //CString---->char*    

 

   strcpy(strchar,(LPSTR)(LPCTSTR)strCString);                                    //CString---->char[]     

 

   _bstr_t strbstr=pstr;                                                 //char*---->_bstr_t   

 

   WCHAR *strWCHAR=strbstr;                             //b_str_t--->UNICODE         

 

  strbstr=strWCHAR;      pstr=strbstr;              //UNICODE---->char*

 

   strCString="10";


     int istr=atoi((LPSTR)(LPCTSTR)strCString);                  //CString、char[]、char*------>int


     strCString.Format("%d",istr);                                          //int----->CString


     sprintf(strchar,"%d",istr);                               //int----->char[]

 

 pstr=new char[256];                              //字符串申请空间    

 

  strcpy(pstr,"ABC");                               //字符串赋值     

 

 delete []pstr;                                        //字符串释放          

 

string strstring="ABC";     

 

pstr=(char*)strstring.c_str();                             //string---->char*    

 

strCString="2003-10-27 6:24:37";                       //CString--->COleDateTime   

 

COleVariant vtime(strCString);     

 

 vtime.ChangeType(VT_DATE);     

 

COleDateTime time4=vtime;

 

 COleDateTime time1(1977,4,16,2,2,2);                            //COleDataTime--->CTime

 


     SYSTEMTIME systime;


     VariantTimeToSystemTime(time1, &systime);


     CTime tm(systime);
    
     time_t time2=tm.GetTime();                                //CTime--->time_t


     COleDateTime time3(time2);                             //time_t--->COleDateTime

 

   //判断字符串是否是某种类型


     CString sValue("123.1");


     COleVariant vValue(sValue);
    
     BOOL bStrIsFloat = (SUCCEEDED(VariantChangeType(&vValue, &vValue, 0, VT_R8)) && sValue.Find('.') != -1);
     if(bStrIsFloat)
     {
     AfxMessageBox("浮点");
     }
    } 

/////////1.   char*   转成CString     

 

    (1)可以直接构造函数.如下:             

 

          char   *   p   =   "test";     CString   str(p);      

 

   (2)可以用成员函数Format   如下:                    

 

 char*   p   =   "test;                

 

     CString   str;                    

 

 str.Format("%s",   p);     2.   CString   转   char*      char*   ch   =   cstring.GetBuffer(cstring.GetLength());  

 

/////////////
CString a = "poprat";
char* b;
b = new char[strlen(a)+1];
strcpy(b, a);

//////////////////
[转]string CString以及char*2006年12月12日 星期二 16:32string是方便的,可以从几乎所有的字符串构造而来,包括CString和char*;

CString次之,可以从基本的一些字符串变量构造而来,包括char*等;
char*没有构造函数,仅可以赋值;
举例:
char* psz = “joise”;
CString cstr( psz );
string str( cstr );
string是最方便的,几乎可以直接用所有的字符串赋值,包括CString和char*;
CString次之,可以直接用些基本的字符串赋值,包括char*等;
char*只能由指针赋值,并且是极危险的操作,建议使用strcpy或者memcpy,而且char*在声明的时候如未赋初值建议先设为NULL,以避免野指针,令你抓狂;
举例:
char *psz = NULL;
psz = new char[10]; //当然,以上的直接写成char *psz = new char[10];也是一样
memset( psz, 0, 10 );
strcpy( psz, “joise” ); 
CString cstr;
cstr = psz;
string str;
str = psz;
str = cstr;
delete []psz;
string与CString差不多,可以直接与char*进行加法,但不可以相互使用+运算符,即string str = str + cstr是非法的,须转换成char*;char*没有+运算,只能使用strcat把两个指针连在一起;举例:char* psz = “joise”;CString cstr = psz;cstr = cstr + psz;string str = psz;str = str + str + psz;strcat( psz, psz );strcat( psz, cstr );//合法strcat( psz, str );//非法,由此可见,CString可自动转换为const char*,而string不行 /////////////////////
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bzljn/archive/2008/07/14/2650876.aspx

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:70637次
    • 积分:859
    • 等级:
    • 排名:千里之外
    • 原创:14篇
    • 转载:17篇
    • 译文:2篇
    • 评论:1条
    文章分类
    最新评论