VC++中几种数据类型(CString, char*, char, ******等)之间的相互转换

时间:2021-04-20 17:51:46
C++代码  VC++中几种数据类型(CString, char*, char, ******等)之间的相互转换
  1.     #include <******.h>  
  2.     using namespace std;   
  3.   
  4.   
  5.  void main()       
  6.  {   
  7.      CString strCString="ABC";   
  8.      char strchar[256],*pstr;   
  9.        
  10.      pstr=(LPSTR)(LPCTSTR)strCString; //CString---->char*   
  11.      strcpy(strchar,(LPSTR)(LPCTSTR)strCString); //CString---->char[]   
  12.        
  13.      _bstr_t strbstr=pstr; //char*---->_bstr_t   
  14.      WCHAR *strWCHAR=strbstr; //b_str_t--->UNICODE   
  15.        
  16.      strbstr=strWCHAR;   
  17.      pstr=strbstr; //UNICODE---->char*   
  18.        
  19.      strCString="10";   
  20.      int istr=atoi((LPSTR)(LPCTSTR)strCString); //CString、char[]、char*------>int   
  21.      strCString.Format("%d",istr); //int----->CString   
  22.      sprintf(strchar,"%d",istr); //int----->char[]   
  23.        
  24.      pstr=new char[256]; //字符串申请空间   
  25.      strcpy(pstr,"ABC"); //字符串赋值   
  26.      delete []pstr; //字符串释放   
  27.        
  28.      string strstring="ABC";   
  29.      pstr=(char*)strstring.c_str(); //string---->char*   
  30.        
  31.      strCString="2003-10-27 6:24:37"//CString--->COleDateTime   
  32.      COleVariant vtime(strCString);   
  33.      vtime.ChangeType(VT_DATE);   
  34.      COleDateTime time4=vtime;   
  35.        
  36.        
  37.        
  38.      COleDateTime time1(1977,4,16,2,2,2); //COleDataTime--->CTime   
  39.      SYSTEMTIME systime;   
  40.      VariantTimeToSystemTime(time1, &systime);   
  41.      CTime tm(systime);   
  42.        
  43.      time_t time2=tm.GetTime(); //CTime--->time_t   
  44.      COleDateTime time3(time2); //time_t--->COleDateTime   
  45.        
  46.      //判断字符串是否是某种类型   
  47.      CString sValue("123.1");   
  48.      COleVariant vValue(sValue);   
  49.        
  50.      BOOL bStrIsFloat = (SUCCEEDED(VariantChangeType(&vValue, &vValue, 0, VT_R8)) && sValue.Find('.') != -1);   
  51.      if(bStrIsFloat)   
  52.      {   
  53.          AfxMessageBox("浮点");   
  54.      }   
  55.  }   
  56.   
  57.   
  58. string 转 CString    
  59.     CString.format("%s", string.c_str());    
  60.   
  61. char 转 CString    
  62.     CString.format("%s"char*);    
  63.   
  64. char 转 string    
  65.     string s(char *);    
  66.   
  67. string 转 char *    
  68.     char *p = string.c_str();    
  69.   
  70. CString 转 string    
  71.     string s(CString.GetBuffer());   
  72.   
  73.     GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.    
  74.   
  75.   
  76. CString互转int    
  77.   
  78.    将字符转换为整数,可以使用atoi、_atoi64或atol。    
  79.    而将数字转换为CString变量,可以使用CString的Format函数。如    
  80.    CString s;    
  81.    int i = 64;    
  82.    s.Format("%d", i)    
  83.     
  84. CString互转char*    
  85.   
  86.    ///char * TO CString    
  87.    CString strtest;    
  88.    char * charpoint;    
  89.    charpoint="give string a value";    
  90.    strtest=charpoint;    
  91.    (这个方法我在VisualStdio2005中试了一下,会出现错误.暂且保存下来,回来试试其他环境能不能通过.)  
  92.   
  93.    我自己还实验了一种方法:  
  94.   
  95.    char* pCh = "kkkkkk";  
  96.   
  97.    CString str(pCh);  
  98.   
  99.    就是把char*作为初始化CString的参数,经过实验可以正常使用.  
  100.   
  101.    ///CString TO char *    
  102.    charpoint=strtest.GetBuffer(strtest.GetLength());    
  103.   
  104.    
  105.    可以用CString.Format("%s",char *)这个方法来将char *转成CString。要把CString转成char *,用操作符(LPCSTR)CString就可以了。    
  106.   
  107. CString转换 char[100]    
  108.   
  109.    char a[100];    
  110.    CString str("aaaaaa");    
  111.    strcpy(a,(LPCTSTR)str,sizeof(a));   

本文章来自于【http://xboyhjm.iteye.com/blog/889600】