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这两个成员函数的作用域不是只有一行吗?
展开
 我来答
匿名用户
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()失效
}
百度网友c281b4c
2013-06-21 · TA获得超过2293个赞
知道大有可为答主
回答量:2382
采纳率:50%
帮助的人:1048万
展开全部
这个好像给你说的作用域关系不大。因为你那个是设置宽度的。后面的注释掉以后实际多宽就输出多少宽度的字符。
所以不加填充符。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式