C++输入输出流问题:
代码如下:#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){cout.fill('*');c...
代码如下:
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
cout.fill('*');
cout.width(5);
cout.setf(ios::left);
cout<<123<<endl;
cout.unsetf(ios::left);
cout.width(5); //如果注释掉
cout<<123<<endl;
}
我想问的是
现在输出的结果是
123**
**123
如果注释掉那句,输出结果是
123**
123
这是为什么? fill和width这两个成员函数的作用域不是只有一行吗? 展开
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
cout.fill('*');
cout.width(5);
cout.setf(ios::left);
cout<<123<<endl;
cout.unsetf(ios::left);
cout.width(5); //如果注释掉
cout<<123<<endl;
}
我想问的是
现在输出的结果是
123**
**123
如果注释掉那句,输出结果是
123**
123
这是为什么? fill和width这两个成员函数的作用域不是只有一行吗? 展开
2013-06-21
展开全部
fill()函数在设置后将一直有效,除非被重新设定。
而width()函数设置后只能有效作用一次,即只对设置后的下一个输出有效。
width()默认是右对齐,C++默认输出的字段宽度为“最合适宽度"(正好内容那么长)
void main()
{
cout.fill('*'); //设置填充*
cout.width(5); //设置宽度5
cout.setf(ios::left); //设置左对齐
cout<<123<<endl; //输出123**。左对齐,空余字段用*填充 。width()失效
cout.unsetf(ios::left); //取消左对齐设置,回到默认值(右对齐)
cout.width(5); //如果注释掉则回到默认值(最合适宽度),那么输出123
cout<<123<<endl; //**123。右对齐,空余字段用*填充。width()失效
}
而width()函数设置后只能有效作用一次,即只对设置后的下一个输出有效。
width()默认是右对齐,C++默认输出的字段宽度为“最合适宽度"(正好内容那么长)
void main()
{
cout.fill('*'); //设置填充*
cout.width(5); //设置宽度5
cout.setf(ios::left); //设置左对齐
cout<<123<<endl; //输出123**。左对齐,空余字段用*填充 。width()失效
cout.unsetf(ios::left); //取消左对齐设置,回到默认值(右对齐)
cout.width(5); //如果注释掉则回到默认值(最合适宽度),那么输出123
cout<<123<<endl; //**123。右对齐,空余字段用*填充。width()失效
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询