CString::Format的常用方法
参考:http://blog.csdn.net/wangkaishou/article/details/5846152
Format用于转换的格式字符:
%c 单个字符
%d 十进制整数(int)
%ld 十进制整数(long)
%f 十进制浮点数(float)
%lf 十进制浮点数(double)
%o 八进制数
%s 字符串
%u 无符号十进制数
%x 十六进制数
格式字符要正确,不然轻则乱码重则崩溃
1.int 转 CString:
1 int a = 12; 2 CString str; 3 int len = 0; 4 CString str_len; 5 6 str.Format("%d", a); 7 AfxMessageBox(str);//12 输出a的字符串格式 8 len = str.GetLength(); 9 str_len.Format("%d", len); 10 AfxMessageBox(str_len);//2 11 12 str.Format("%04d", a); 13 AfxMessageBox(str);//0012 输出数据a的字符串格式并在前面补0,长度为4 14 len = str.GetLength(); 15 str_len.Format("%d", len); 16 AfxMessageBox(str_len);//4 17 18 a = 12000; 19 str.Format("%04d", a); 20 AfxMessageBox(str);//12000 实际长度超过设置长度以实际长度为准 21 len = str.GetLength(); 22 str_len.Format("%d", len); 23 AfxMessageBox(str_len);//5 24 25 a = 12; 26 str.Format("%4d", a); 27 AfxMessageBox(str);// 12 (前面有2个空格)输出数据a的字符串格式并在前面补空格 28 len = str.GetLength(); 29 str_len.Format("%d", len); 30 AfxMessageBox(str_len);//4 31 32 str.Format("%24d", a); 33 AfxMessageBox(str);// 12(前面有22个空格)只能在前面补0 不能补其他字符 34 len = str.GetLength(); 35 str_len.Format("%d", len); 36 AfxMessageBox(str_len);//24
2.double 转 CString:
double lf_a; lf_a = 1.234; str.Format("%lf", lf_a); AfxMessageBox(str);//1.234000 输出lf_a的字符串格式 默认保留小数点后6位 float也是6位 len = str.GetLength(); str_len.Format("%d", len); AfxMessageBox(str_len);//8 lf_a = 1.23456746; str.Format("%lf", lf_a); AfxMessageBox(str);//1.234567 输出lf_a的字符串格式 默认保留小数点后6位 四舍五入 len = str.GetLength(); str_len.Format("%d", len); AfxMessageBox(str_len);//8 lf_a = 1.23556746; str.Format("%6.2lf", lf_a); AfxMessageBox(str);// 1.24(前面有2个空格) 输出lf_a的字符串格式 保留小数点后2位 四舍五入,并在前面补空格 len = str.GetLength(); str_len.Format("%d", len); AfxMessageBox(str_len);//6 lf_a = 1.23556746; str.Format("%06.2lf", lf_a); AfxMessageBox(str);//001.24 输出lf_a的字符串格式 保留小数点后2位 四舍五入,并在前面补0 len = str.GetLength(); str_len.Format("%d", len); AfxMessageBox(str_len);//6
3.int 转各个进制字符串
str.Format("%d", a); AfxMessageBox(str);//12 输出a的十进制字符串格式 len = str.GetLength(); str_len.Format("%d", len); AfxMessageBox(str_len);//2 str.Format("%X", a); AfxMessageBox(str);//C 输出a的十六进制字符串格式 len = str.GetLength(); str_len.Format("%d", len); AfxMessageBox(str_len);//1 str.Format("%o", a); AfxMessageBox(str);//14 输出a的八进制字符串格式 len = str.GetLength(); str_len.Format("%d", len); AfxMessageBox(str_len);//2 char arr[10]; _itoa_s(a, arr, 2); str.Format("%s", arr); AfxMessageBox(str);//1100 输出a的二进制字符串格式 len = str.GetLength(); str_len.Format("%d", len); AfxMessageBox(str_len);//4
4.其他
str.Format("000%-4d111", 12); AfxMessageBox(str);//00012 111(12后111前有2个空格) 指定参数向左齐 len = str.GetLength(); str_len.Format("%d", len); AfxMessageBox(str_len);//10 str.Format("%.5d", 123); AfxMessageBox(str);//00123 在整型值的前面补0 len = str.GetLength(); str_len.Format("%d", len); AfxMessageBox(str_len);//5 str.Format("%.2s", "1234"); AfxMessageBox(str);//12 比字符串型的长度小,则会截断尾部的字符 len = str.GetLength(); str_len.Format("%d", len); AfxMessageBox(str_len);//2
//CString::Format也支持这些格式 double lf_b; lf_b = 100.2345678; printf("%f \n", lf_b);//100.234568 保留小数点后6位,四舍五入 printf("%g \n", lf_b);//100.235 保留6个有效数字包括整数部分和小数部分,四舍五入 printf("%e \n", lf_b);//1.002346e+002 保留小数点后6位,四舍五入 lf_b = 1.2000; printf("%f \n", lf_b);//1.200000 保留小数点后6位,不够补0 printf("%G \n", lf_b);//1.2 去掉无效数字 printf("%E \n", lf_b);//1.200000E+000 保留小数点后6位,四舍五入
printf("%+d %+d %+d \n",-5, 0, 5);//-5 +0 +5 强制输出正负 printf("% d % d % d \n",-5, 0, 5);//-5 0 5 只在负的前面加‘-’ printf("%+e %+e %+e \n",-15.1, 0.2, 51.3);//-1.510000e+001 +2.000000e-001 +5.130000e+001 组合
格式小结:
(1)最常用的格式是%d,以10进制形式打印一个整数
如果输出的整数是负数,则输出的第一个字符就是‘-’号
(2)%u格式与%d格式类似,只不过要求打印无符号10进制整数
(3)%o格式输出8进制整数
(4)%x和%X格式输出16进制整数
%x格式中用小写字母a,b,c,d,e,f来表示10到15之间的数
%X格式中用大写字母A,B,C,D,E,F来表示10到15之间的数
共同点:8进制和16进制整数总是作为无符号数处理的。
(5)%s格式用于打印字符串,对应的参数应该是一个字符指针,待输出的字符始于该指针所指向的地址,直到出现一个空字符('/0')时终止
(6)%c格式用于打印单个字符:例如:printf("%c", 'c'); 等价于 putchar('c');
(7)%g,%f和%e这三个格式用于打印浮点值
%g格式其作用有1.去掉该数尾多余的零(小于六位的数)2.保留六位有效数字(大于六位的)
%e格式用于打印浮点数时,一律显示地使用指数形式:例如:输出圆周率时是:3.141593e+00
两者的区别:1.%g格式打印出的数是总共6位有效数字2.%e格式打印出小数点后的6位有效数字
%f禁止使用指数形式来表示浮点数。因此圆周率输出为:3.141593(小数点后6位有效数字)
(8)%%格式用于打印一个%字符
(9)%E和%e只是在输出时用大写字母(E)代替了小写字母(e)
(10)%G和%g无区别

浙公网安备 33010602011771号