当前位置:文档之家› 在VC6.0下面数据类型装换

在VC6.0下面数据类型装换

C/C++与MFC数据类型转换一.string,CString,int,char*之间的相互转换1. //-------- int ---> CString--------------///* int a = 3;CString str;str.Format("%d",a);MessageBox(str);*/2. //---------string ---> CString-----------///* string str = "abcd";CString cstr;//错误的写法//cstr.Format("%s",str); //运行出错cstr.Format("%s",str.c_str());MessageBox(cstr);*/3. //----------char * ---> CString-------------///* char *ch;ch = "abcdef" ;CString str ;//有两种方法//str.Format("%s",ch);//str =ch;MessageBox(str);*/4. //-----------CString ---> char * ------------///* CString cstr = "abcdefg" ;char *ch = cstr.GetBuffer(cstr.GetLength());char *ch = (char *)LPCTSTR(cstr);MessageBox(ch);/*5. //----------CString --->char[100]------------///*char ch[100];CString cstr = "abcde";//strncpy(ch,cstr,sizeof(ch));strncpy(ch,(LPCTSTR)cstr,sizeof(ch));MessageBox(ch);*/6. //-----------CString ---> int -------------///* CString str="123";CString str1 = "123.333";int temp = atoi((LPCTSTR)str1);CString show ;show.Format("%d",temp);MessageBox(show);*//* CString str = "123";UINT n ;sscanf(str,"%d",n);CString show ;show.Format("%d",n);MessageBox(show);*/7. //-------------char * ---> int | long | float | double----------------///* char *ch = "123" ;int n = atoi(ch);CString show ;show.Format("%d",n);MessageBox(show);*//* char *ch = "123" ;long lon = atol(ch);CString show ;show.Format("%d",lon);MessageBox(show);*///除了以上的方法//还有如下://long long atoll(const char *nptr);//long long atoq(const char *nptr);/* char *ch = "12.3" ;float f ;f = atof(ch);CString show ;show.Format("%f",f);MessageBox(show);*//* char *ch = "12.3" ;double d ;d = strtod(ch,NULL);CString show ;show.Format("%lf",d);MessageBox(show);*/7. //--------------CString ---> string---------------///* CString cstr = "abcde" ;string str(cstr.GetBuffer(100));cstr.ReleaseBuffer(); //一定要释放资源CString show ;show.Format("%s",str.c_str());MessageBox(show);*/8. //--------------char * ---> string -------------///* char *ch="abcd";string str(ch);CString show ;show.Format("%s",str.c_str());MessageBox(show);//你的只能初始化,在不是初始化的地方最好还是用assign().*/9. //--------------int ---> char *---------------///*在stdlib.h中有个函数itoa()itoa的用法:itoa(i,num,10);i 需要转换成字符的数字num 转换后保存字符的变量10 转换数字的基数(进制)10就是说按照10进制转换数字。

还可以是2,8,16等等你喜欢的进制类型原形:char *itoa(int value, char* string, int radix);*//* int a = 10;char *ch = new char[10];itoa(a,ch,10);MessageBox(ch);*/10. //----------------string ---> char *--------------------///* char *ch = new char[100];memset(ch,0,100);string str("abcd");//ch = str.c_str(); //'=' : cannot convert from 'const char *' to 'char *' string 只能转化成 const char *strcpy(ch,str.c_str());MessageBox(ch);*/二、其它数据类型转换为字符串短整型(int)itoa(i,temp,10); //将i转换为字符串放入temp中,最后一个数字表示十进制itoa(i,temp,2); //按二进制方式转换长整型(long)ltoa(l,temp,10);三、从其它包含字符串的变量中获取指向该字符串的指针CString变量str = "2008北京奥运";buf = (LPSTR)(LPCTSTR)str;BSTR类型的_variant_t变量v1 = (_bstr_t)"程序员";buf = _com_util::ConvertBSTRToString((_bstr_t)v1);四、字符串转换为其它数据类型strcpy(temp,"123");短整型(int)i = atoi(temp);长整型(long)l = atol(temp);浮点(double)d = atof(temp);五、其它数据类型转换到CString使用CString的成员函数Format来转换,例如:整数(int)str.Format("%d",i);字符串指针(char *)等已经被CString构造函数支持的数据类型可以直接赋值str = username;六、BSTR、_bstr_t与CComBSTRCComBSTR、_bstr_t是对BSTR的封装,BSTR是指向字符串的32位指针。

char *转换到BSTR可以这样: BSTR b=_com_util::ConvertStringToBSTR("数据"); //使用前需要加上头文件comutil.h反之可以使用char *p=_com_util::ConvertBSTRToString(b);七、VARIANT 、_variant_t 与COleVariant对于VARIANT变量的赋值:首先给vt成员赋值,指明数据类型,再对联合结构中相同数据类型的变量赋值,例如:VARIANT va;int a=2001;va.vt=VT_I4; //指明整型数据va.lVal=a; //赋值对于不马上赋值的VARIANT,最好先用Void VariantInit(VARIANTARG FAR* pvarg);进行初始化,其本质是将vt设置为VT_EMPTY_variant_t是VARIANT的封装类,其赋值可以使用强制类型转换,其构造函数会自动处理这些数据类型。

例如:long l=222;ing i=100;_variant_t lVal(l);lVal = (long)i;COleVariant的使用与_variant_t的方法基本一样,请参考如下例子:COleVariant v3 = "字符串", v4 = (long)1999;CString str =(BSTR)v3.pbstrVal;long i = v4.lVal;八、其它对消息的处理中我们经常需要将WPARAM或LPARAM等32位数据(DWORD)分解成两个16位数据(WORD),例如:LPARAM lParam;WORD loValue = LOWORD(lParam); //取低16位WORD hiValue = HIWORD(lParam); //取高16位对于16位的数据(WORD)我们可以用同样的方法分解成高低两个8位数据(BYTE),例如: WORD wValue;BYTE loValue = LOBYTE(wValue); //取低8位BYTE hiValue = HIBYTE(wValue); //取高8位。

相关主题