搜索
您的当前位置:首页正文

关于C++中cout输出不足两位数字补0

来源:好走旅游网

在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++查资料的时候好像没有找到直接有说明的地方 所以想给大家提个醒 谢谢阅读。 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top