您的位置:首页 > 其它

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

2015-04-24 18:07 211 查看
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来说,就认为字符串终止了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: