最近在用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位指针,指向一个字符串,此字符串可以移植到Unicode和DBCS(常用)
LPCTSTR-------32位指针,指向一个常数字符串,此字符串可以移植到Unicode和DBCS(常用)
总结一下,就是哪几个*to*函数以及sprintf(),以及Format函数
参考文章:
http://blog.sina.com.cn/s/blog_6a5f67e201019rj5.html
http://blog.csdn.net/windows_nt/article/details/7424649
by liuliu 20170724