CString 类型转换大全Word下载.docx
《CString 类型转换大全Word下载.docx》由会员分享,可在线阅读,更多相关《CString 类型转换大全Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
overload;
事实上Format方法有两个种形式,另外一种是三个参数的,主要区别在于它是线程安全的,
但并不多用,所以这里只对第一个介绍:
Format参数是一个格式字符串,用于格式化Args里面的值的。
Args又是什么呢,
它是一个变体数组,即它里面可以有多个参数,而且每个参数可以不同。
如以下例子:
Format("
mynameis%6s"
"
wind"
返回后就是
mynameiswind
现在来看Format参数的具体情况:
Format里面可以写普通的字符串,比如"
mynameis"
但有些格式指令字符具有非凡意义,比如"
%6s"
格式指令具有以下的形式:
"
%"
[index"
:
"
]["
-"
][width]["
."
prec]type
它是以"
开始,而以type结束,type表示一个具体的类型。
中间是用来
格式化type类型的指令字符,是可选的。
先来看看type,type可以是以下字符:
d
十制数,表示一个整型值
u
和d一样是整型值,但它是无符号的,而假如它对应的值是负的,则返回时
是一个2的32次方减去这个绝对值的数
如:
Format("
thisis%u"
-2);
返回的是:
thisis4294967294
f
对应浮点数
e
科学表示法,对应整型数和浮点数,
比如Format("
thisis%e"
-2.22);
thisis-2.220000E+000
等一下再说明假如将数的精度缩小
g
这个只能对应浮点型,且它会将值中多余的数去掉
thisis%g"
02.200);
thisis2.2
n
只能对应浮点型,将值转化为号码的形式。
看一个例子就明白了
thisis%n"
4552.2176);
返回的是thisis4,552.22
注重有两点,一是只表示到小数后两位,等一下说怎么消除这种情况
二是,即使小数没有被截断,它也不会也像整数部分一样有逗号来分开的
m
钱币类型,但关于货币类型有更好的格式化方法,这里只是简单的格式化
另外它只对应于浮点值
thisis%m"
9552.21);
返回:
thisis¥9,552.21
p
对应于指针类型,返回的值是指针的地址,以十六进制的形式来表示
例如:
thisis%p"
p);
Edit1的内容是:
thisis0012F548
s
对应字符串类型,不用多说了吧
x
必须是一个整形值,以十六进制的形式返回
thisis%X"
15);
返回是:
thisisF
类型讲述完毕,下面介绍格式化Type的指令:
[index"
]
这个要怎么表达呢,看一个例子
thisis%d%d"
12,13);
其中第一个%d的索引是0,第二个%d是1,所以字符显示的时候
是这样
thisis1213
而假如你这样定义:
thisis%1:
d%0:
d"
那么返回的字符串就变成了
thisis1312
现在明白了吗,[index"
]中的index指示Args中参数显示的
顺序
还有一种情况,假如这样Format("
%d%d%d%0:
d%d"
1,2,3,4);
将返回12312。
假如你想返回的是12314,必须这样定:
d%3:
但用的时候要注重,索引不能超出Args中的个数,不然会引起异常
如Format("
thisis%2:
由于Args中只有1213两个数,所以Index只能是0或1,这里为2就错了
[width]
指定将被格式化的值占的宽度,看一个例子就明白了
thisis%4d"
12);
输出是:
thisis12
这个是比较轻易,不过假如Width的值小于参数的长度,则没有效果。
thisis%1d"
["
这个指定参数向左齐,和[width]合在一起最可以看到效果:
thisis%-4d,yes"
thisis12,yes
prec]
指定精度,对于浮点数效果最佳:
Format('
thisis%.2f'
['
1.1234]);
输出thisis1.12
thisis%.7f'
输了thisis1.1234000
而对于整型数,假如prec比如整型的位数小,则没有效果
反之比整形值的位数大,则会在整型值的前面以0补之
thisis%.7d'
[1234]);
thisis0001234]
对于字符型,刚好和整型值相反,假如prec比字符串型的长度大
则没有效果,反之比字符串型的长度小,则会截断尾部的字符
thisis%.2s'
1234'
]);
输出是thisis12
而上面说的这个例子:
thisis%e'
[-2.22]);
thisis-2.22000000000000E+000
怎么去掉多余的0呢,这个就行啦
thisis%.2e'
好了,第一个总算讲完了,应该对他的应用很熟知了吧
///////////////////////////////////////////////////////////////
二FormatDateTime的用法
他的声明为:
functionFormatDateTime(constFormat:
DateTime:
TDateTime):
overload;
当然和Format一样还有一种,但这里只介绍常用的第一种
Format参数是一个格式化字符串。
DateTime是时间类型。
返回值是一种格式化后的
字符串
重点来看Format参数中的指令字符
c以短时间格式显示时间,即全部是数字的表示
FormatdateTime('
c'
now);
输出为:
2004-8-79:
55:
40
d对应于时间中的日期,日期是一位则显示一位,两位则显示两位
d'
输出可能为1~31
dd和d的意义一样,但它始终是以两位来显示的
dd'
输出可能为01~31
ddd显示的是星期几
ddd'
输出为:
星期六
dddd和ddd显示的是一样的。
但上面两个假如在其他国家可能不一样。
ddddd以短时间格式显示年月日
ddddd'
2004-8-7
dddddd以长时间格式显示年月日
dddddd'
2004年8月7日
e/ee/eee/eeee以相应的位数显示年
ee'
04(表示04年)
m/mm/mmm/mmmm表示月
m'
8
mm'
输出为08
mmm'
输出为八月
mmmm'
和ddd/dddd一样,在其他国家可能不同
yy/yyyy表示年
yy'
输出为04
yyyy'
输出为2004
h/hh,n/nn,s/ss,z/zzz分别表示小时,分,秒,毫秒
t以短时间格式显示时间
t'
输出为10:
17
tt以长时间格式显示时间
tt'
输出为10:
18:
46
ampm以长时间格式显示上午还是下午
ttampm'
10:
22:
57上午
大概如此,假如要在Format中加普通的字符串,可以用双引号隔开那些
特定义的字符,这样普通字符串中假如含非凡的字符就不会被显示为
时间格式啦:
todayis"
c'
todayis2004-8-710:
26:
58
时间中也可以加"
或"
来分开日期:
yy-mm-dd'
yymmdd'
todayis04-08-07
也可以用"
来分开时间
hh:
nn:
ss'
todayis10:
32:
23
/////////////////////////////////////////////////////////////////
三.FormatFloat的用法
常用的声明:
functionFormatFloat(constFormat:
Value:
Extended):
和上面一样Format参数为格式化指令字符,Value为Extended类型
为什么是这个类型,因为它是所有浮点值中表示范围最大的,假如传入该方法的参数
比如Double或者其他,则可以保存不会超出范围。
要害是看Format参数的用法
0这个指定相应的位数的指令。
比如:
FormatFloat('
000.000'
22.22);
输出的就是022.220
注重一点,假如整数部分的0的个数小于Value参数中整数的位数,则没有效果
0.00'
输出的是:
22.22
但假如小数部分的0小于Value中小数的倍数,则会截去相应的小数和位数
0.0'
22.2
也可以在整数0中指定逗号,这个整数位数必须大于3个,才会有逗号出句
FormatFloat('
0,000.0'
2222.22);
2,222.2
假如这样FormatFloat('
000,0.0'
它的输出还是:
注重它的规律
#和0的用法一样,目前我还没有测出有什么不同。
##.##'
22.00
E科学表示法,看几个例子大概就明白了
0.00E+00'
输出是2.22E+03
0000.00E+00'
输出是2222.22E+00
00.0E+0'
22.2E+2
明白了吗,全靠E右边的0来支配的。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ANSI和UNICODE的函数对应表
ANSI
UNICODE
通用
(char.h)
(wchar.h)
(tchar.h)
char
wchar_t
TCHAR
char*
wchar_t*
PTCHAR(PTSTR,LPWSTR,PWSTR,WCHAR)
printf
wprintf
_tprintf
scanf
wscanf
_tscanf
atoi
_wtoi
_ttoi
atol
_wtol
_ttol
itoa
_itow
_itot
ltoa
_ltow
_ltot
atof
_wtof
_tstof
strlen
wcslen
_tcslen
strcat
wcscat
_tcscat
strcpy
wcscpy
_tcscpy
strcmp
wcscmp
_tcscmp
ASCII
UNICODE
TCHAR
VS2005
int
atoi
_wtoi
_tstoi
_ttoi
_atoi_l
_wtoi_l
long
atol
_wtol
__int64
_atoi64
_wtoi64
_tstoi64
_ttoi64
_atoi64_l
_wtoi64_l
float
_atoflt
_atoflt_l
double
atof
_wtof
_tstof
_ttof
_atof_l
_wtof_l
_atodbl
_atodbl_l
longdouble
_atoldbl
_atoldbl_l
atof,_atof_l,_wtof,_wtof_l
Convertstringtofloat
atoi,_atoi_l,_wtoi,_wtoi_l
Convertstringtoint
_atoi64,_atoi64_l,_wtoi64,_wtoi64_l
Convertstringto__int64
atol,_atol_l,_wtol,_wtol_l
Convertstringtolong
_ecvt,_ecvt_s
Convertdoubletostringofspecifiedlength
_fcvt,_fcvt_s
Convertdoubletostringwithspecifiednumberofdigitsfollowingdecimalpoint
_gcvt,_gcvt_s
Convertdoublenumbertostring;
storestringinbuffer
_itoa,_i64toa,_ui64toa,_itow,_i64tow,_ui64tow,_itoa_s,_i64toa_s,_ui64toa_s,_itow_s,_i64tow_s,_ui64tow_s
Convertintor__int64tostring
_ltoa,_ltow,_ltoa_s,_ltow_s
Convertlongtostring
strtod,_strtod_l,wcstod,_wcstod_l
Convertstringtodouble
strtol,wcstol,_strtol_l,_wcstol_l
Convertstringtolonginteger
strtoul,_strtoul_l,wcstoul,_wcstoul_l
Convertstringtounsignedlonginteger
_ultoa,_ultow,_ultoa_s,_ultow_s
Convertunsignedlongtostring
Convertwide-characterstringtoadouble
Convertwide-characterstringtoint
Convertwide-characterstringto__int64
Convertwide-characterstringtolong
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,假如表达式为FALSE
(0),
程序将报告错误,并终止执行。
假如表达式不为0,则继续执行后面的语句。
这个宏通常原来判定程序中是否出现了明显非法的数据,假如出现了终止程序以免导致严重后果,同时也便于查找错误。
ASSERT只有在Debug版本中才有效,假如编译为Release版本则被忽略。
------------------------------