首页 > 其他 > 详细

格式化输出中的%s和%S的陷阱

时间:2015-04-24 20:49:43      阅读:172      评论:0      收藏:0      [点我收藏+]

CStringA csa;
CStringA csc;
CString csb(L"131231111111");
csa.Format("%s", csb);      // 只会输出1
csc.Format("%S", csb);      // 会输出131231111111

printf("%s\n", csa.GetBuffer(0));
printf("%s\n", csc.GetBuffer(0));

本意想输出131231111111,可是"%s"只会输出1,因为%s是按照ascill编码,而csb是unicode编码,unicode编码格式是一个"1"后会跟一个0x00,所以对于ascill来说,就认为字符串终止了.

 

格式化输出中的%s和%S的陷阱

原文:http://www.cnblogs.com/aheadshooter/p/4454164.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!