关于cout.width()的非预期结果
程序的意思我就不说了,和问题没关系,我的问题在红色部分,原意是控制输出每行留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;
}
望赐教。