关于cout.width()的非预期结果

Athos_K 2009-02-16 11:25:58
程序的意思我就不说了,和问题没关系,我的问题在红色部分,原意是控制输出每行留5个空格,每行输出10个元素。但结果是每行留4个空格,然后在每行第一个元素前加了个0 !!!程序如下:
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<string>
#include<vector>
#include<fstream>
using namespace std;
void InsertMax(vector<int> &L,int elt)
{
int sign=1;
for(int i=0;i<L.size();i++)
if(L[i]>=elt)
{
sign=0;
break;
}
if(sign==1)
L.push_back(elt);
}
int main()
{
int a[20];
srand(time(0));
for(int i=0;i<20;i++)
a[i]=rand()%51;
vector<int>ivec(a,a+20);
for(int i=0;i<20;i++)
{
if(i%10==0)
cout<<endl<<cout.width(5);
cout<<ivec[i]<<" ";
}

cout<<endl;
ifstream inFile;
inFile.open("4.1a.txt",ios_base::in);
if(!inFile)
{
cerr<<"Unable open input file!";
return -1;
}
int value;
while(inFile>>value)
InsertMax(ivec,value);
for(int i=0;i<ivec.size();i++)
{
if(i%10==0)
cout<<endl<<cout.width(5);
cout<<ivec[i]<<" ";
}

cout<<endl;
system("pause");
return 0;
}
望赐教。
...全文
188 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Athos_K 2009-02-17
  • 打赏
  • 举报
回复
那为什么连着写( cout < <endl < <cout.width(5); )会出现奇怪的0呢?
sagegz 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 Athos_K 的回复:]
那为什么连着写( cout <<endl <<cout.width(5); )会出现奇怪的0呢?
[/Quote]
cout.width(5)是一条语句,不要跟output运算符一起使用.
qqlpp 2009-02-17
  • 打赏
  • 举报
回复
不懂,帮顶
hityct1 2009-02-17
  • 打赏
  • 举报
回复
mark
waizqfor 2009-02-16
  • 打赏
  • 举报
回复

for(int i=0;i <20;i++)
{
if(i%10==0)
cout < <endl;
cout.width(5);
cout < <ivec[i] < <" ";
}

a_rockboy 2009-02-16
  • 打赏
  • 举报
回复
if(i%10==0)
cout << endl;

cout << cout.width(5) << ivec[i] << " ";

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧