CString.Format的详细用法

转自:http://www.cnblogs.com/zlintokyo/archive/2011/09/28/2193885.html


在MFC程序中,使用CString来处理字符串是一个很不错的选择。CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串。CString的Format方法给我们进行字符串的转换带来了很大的方便,比如常见的int、float和double这些数字类型转换为CString字符串只需一行代码就可以实现。



  先看看Format用于转换的格式字符:


  %c                 单个字符


  %d                 十进制整数(int)


  %ld                十进制整数(long)


  %f                 十进制浮点数(float)


  %lf                十进制浮点数(double)


  %o                 八进制数


  %s                 字符串


  %u                 无符号十进制数


  %x                 十六进制数


1、int转换为CString:


  CString str;


  int number=15;


  //str="15"


  str.Format(_T("%d"),number);


  //str=" 15"(前面有两个空格;4表示将占用4位,如果数字超过4位将输出所有数字,不会截断)


  str.Format(_T("%4d"),number);


  //str="0015"(.4表示将占用4位,如果数字超过4位将输出所有数字,不会截断)


  str.Format(_T("%.4d"),number);


  long转换为CString的方法与上面相似,只需要把%d改为%ld就可以了。


注:VC++里面定义字符串的时候,用_T来保证兼容性。VC++支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改。 如果将来你不打算升级到unicode,那么也不需要_T。
_t("hello world")
在ansi的环境下,它是ansi的,如果在unicode下,那么它将自动解释为双字节字符串,既unicode编码。 这样做的好处,不管是ansi环境,还是unicode环境,都适用。
那么在VC++中,字符串_T("ABC")和一个普通的字符串"ABC"有什么区别呢?
_T("ABC") 

如果定义了unicode,它将表示为L"ABC",每个字符为16位,宽字符串。
如果没有定义unicode,它就是ascii的"ABC",每个字符为8位。


2、double转换为CString:


  CString str;


  double num=1.46;


  //str="1.46"


  str.Format(_T("%lf"),num);


  //str="1.5"(.1表示小数点后留1位,小数点后超过1位则四舍五入)


  str.Format(_T("%.1lf"),num);


  //str="1.4600"


  str.Format(_T("%.4f"),num);


  //str=" 1.4600"(前面有1个空格)


  str.Format(_T("%7.4f"),num);


  float转换为CString的方法也同上面相似,将lf%改为f%就可以了。


3、将十进制数转换为八进制:


  CString str;


  int num=255;


  //str="377"


  str.Format(_T("%o"),num);


  //str="00000377"


  str.Format(_T("%.8o"),num);


附:

格式说明总是以%字符开始,以下是不同类型数据的格式方式%号后的说明: 
d输出带符号十进制数 
o输出无符号八进制数 
x输出无符号十六进制数 
u输出无符号数 
c输出单个字符 
s输出一串字符 
f输出实数(6位小数) 
e以指数形式输出实数 
g选用f与e格式中输出宽度较小的格式,不输出0 
ld输入输出long型数据 
lf输入输出double型数据 
m数据输出宽度为m 
.n输出小数位数为n 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值