在C中 我们可以直接用%02d来要求输出的数据为两位并且如果不足两位时会在左边自动添加上0
例如:
int a=1;
int b=2;
printf("%02d,%02d",a,b);
输出的结果:
01,02
而在C++中 我们则是用另一种方式来实现左边补位的
根据大佬的文章:
我们可以利用setw(w)和setfill('想要填充的字符')来实现C++的补0
但是我们要注意一个点 在setw()那里有明确的注意事项 即它只能生效一次。
而setfill设置之后会一直生效。
所以我们每次都要写一遍setw()
否则想要补0的数字会因为不设置输出宽度而不显示想要得到的补0效果
(如果你不设置输出宽度 则默认是以10进制输出的)
例如:
int a=1;
int b=2;
cout<<setw(2)<<setfill('0')<<a<<"\n";
cout<<setw(2)<<b;
或者
cout<<setw(2)<<setfill('0')<<a<<"\n"<<setw(2)<<b;
输出的结果:
01
02
以下是错误案例:
int a=1;
int b=2;
cout<<setw(2)<<setfill('0')<<a<<"\n";
cout<<b;
或者
cout<<setw(2)<<setfill('0')<<a<<"\n"<<b;
这些错误都是因为忽略了控制输出数据宽度的setw()只能生效一次而导致的
错误答案:
a=01
b=2
因为我学C++查资料的时候好像没有找到直接有说明的地方 所以想给大家提个醒 谢谢阅读。
因篇幅问题不能全部显示,请点此查看更多更全内容