MFC中常用数据类型之间的相互转换

来源:互联网 发布:手机放电软件 编辑:程序博客网 时间:2024/05/22 06:59

        最近在用MFC开发一个软件,涉及到数据库,Modbus总线通讯,所以不可避免会用到多种数据类型之间的转换,今天就来总结一下,MFC中常用的数据类型以及它们之间的相互转换常用的方法。

为了方便叙述,我在先定义以下变量

int i = 100;

long l = 2001;

        float f = 300.2; 

        double = 1213.231;

        char username[]  = "lalala";

        char temp[200];

char *buff;

CString str;

_variant_t v1;

_bstr_t  v2;

(1) 其他数据类型转换为字符串

a) 整型(int)(short int 是为短整型,而int为整型,long int 视为长整型,在VC中也即vs编译器中,short 占两个字节,而int 与long int一致,都占4个字节),原博文有误

有函数 itoa(i,tmp,10);  //按十进制转换。itoa(i,temp ,2);//表示二进制转换为字符串

b) 长整型的转换函数ltoa(l,temp,10);  //这不和整型是一样的吗?

c) 浮点数至字符串的转换,可以用_fcvt 如下:
int decimal ,sign;

char *buffer;

double source  = 3.1415927;

buffer = _fvzt(source,7,&decimal,&sign);   // 运行结果:buffer = "31415927", decimal = 1 sign =0;    decimal 是表示小数点位置,而sign表示符号位

以上转换本人很少使用,一般都是使用sprintf 配合格式控制,就可以轻易控住转换如下

char  buffer[200];char  c = '1';int   i = 35;long  j = 1000;float f = 1.7320534f;sprintf( buffer, "%c",c);sprintf( buffer, "%d",i);sprintf( buffer, "%d",j);sprintf( buffer, "%f",f);
(2) 字符串至其他数据类型的转换

a) 整型  i = atoi(temp);

b) 长整型 l = atol(temp);

c) 浮点数 f = atof(temp);

 d) CStrng str = temp;

(3)其他数据类型至CString的转换

str.Format("%d",i);//类似的还有%f,%lf,%x,等等

特别地:字符串指针类型(char*)等已经CString构造函数支持的数据类型可以直接赋值。str = temp;

明天接着学习一下哪几个常用的字符串指针

LPSTR-----------32位指针,指向一个字符串(CString

LPCSTR---------32位指针,指向一个常数字符串

LPTSRE---------32位指针,指向一个字符串,此字符串可以移植到UnicodeDBCS(常用)

LPCTSTR-------32位指针,指向一个常数字符串,此字符串可以移植到UnicodeDBCS(常用)

总结一下,就是哪几个*to*函数以及sprintf(),以及Format函数

参考文章:

  http://blog.sina.com.cn/s/blog_6a5f67e201019rj5.html       

  http://blog.csdn.net/windows_nt/article/details/7424649                                                                     

                                                                                                                                                                                                                                 by liuliu 20170724