C++中setfill()是对什么部分起作用的?

来源:百度知道 编辑:UC知道 时间:2024/06/03 05:08:24
我的程序中有这样一段:cout<<setw(6)<<number<<setw(6)<<arrivehour;
cout<<":"<<setfill('0')<<setw(2)<<arrivemin;
cout<<setw(10)<<leavehour;
cout<<":"<<setfill('0')<<setw(2)<<leavemin;
cout<<setw(9)<<type<<setw(9)<<sum<<setw(7)<<rate<<setw(9)<<m;
cout<<setw(9)<<total<<endl;

当我执行以后发现不单setfill()后面紧跟的格被'0'填满了,其他也会被填满,为什么会这样的阿?还有我想问,如果我只想填满紧气候的空格应该怎么做?
能给个详细点的回复吗?我刚学c++。更正一下,上面那个“气候”应该是“跟”

setw控制符只对后面紧跟的起作用,而setfill控制符一旦设定,就会对后面一直起作用,直到你重新设置。
我给你举个例子,看下面这段程序:
#include <iostream>
using namespace std;
#include <iomanip>
int main()
{
cout<<setw(8)<<setfill('*')<<123<<endl;
cout<<setw(8)<<456<<endl;
return 0;
}
输出结果是:
*****123
*****456

如果只想填满紧跟后面的,必须重新设置:
#include <iostream>
using namespace std;
#include <iomanip>
int main()
{
cout<<setw(8)<<setfill('*')<<123<<endl;
cout<<setw(8)<<setfill(' ')<<456<<endl;
return 0;
}
注意:重新设置的填充符是空格
这样运行结果是:
*****123
空格456
(由于百度知道不允许每行开头有空格,所以我打上两个汉字,实际运行的时候是五个空格加上456)
就达到你的要求了。
关于控制符的作用范围,你可以多查阅一些相关资料,也要自己多试验,这样才能掌握的牢固。

setfill是设置填充填充字符,setw设置输出的宽度,它们的只作用表现在紧接着输入的字符串上。这个宽度是填充后的宽度。所以

cout<<setfill(&#