我正在努力将一些旧代码从1998年带到21世纪.该过程的第一步是将printf语句转换为QString变量.不管我多少次回头看看printf,我总是忘记了一件事.所以,为了好玩,让我们一起解码它,为了时间的缘故,并在此过程中为Stackoverflow 创建第一个小'printf primer'.
在代码中,我遇到了这个小宝石,
printf("%4u\t%016.1f\t%04X\t%02X\t%1c\t%1c\t%4s", a, b, c, d, e, f, g);
如何格式化变量a,b,c,d,e,f,g?
丹尼大多是对的.
一个.无符号十进制,最少4个字符,空格填充
b.浮点,十进制前最小16位(0填充),小数点后
c 1位.十六进制,最少4个字符,0填充,字母以大写字母
d 打印.与上述相同,但最少2个字符
e.e被假定为int,转换为unsigned char并打印
f.与e
g 相同.这可能是一个错字,4没有效果.如果是"%.4s",则将打印字符串中最多4个字符.有趣的是,在这种情况下,字符串不需要以null结尾.
编辑:jj33指出了b和g以上2个错误在这里.
@ 杰森·戴,我觉得在最后%4S 4,如果有少于4个字符是显著.如果你有4个以上是正确的,%4s和%s将是相同的,但是在g%s中少于4个字符将被左对齐并且%4s将在4字段字段中右对齐.
b实际上是整个字段的最小16个字符,包括小数和小数点后的单个数字(16个字符总数与18个字符总数)