从文件中打印输入数据

时间:2014-03-22 20:16:51

标签: c++ arrays

我有一个带有数据的文本文件名input.txt -

[ANB] 33 34 48 85 50 59安尼斯顿,AL

[AUO] 32 40 11 85 26 24 Auburn,AL

[BHM] 33 34 11 86 45 0伯明翰,AL

这里我需要打印这一行,但我不能这是我的源代码,任何人都可以告诉我我在做什么错了

int main()
{
string a,b;float c,d,e,f,g,h;
int z,q;

string i[15], j[15];
float  k[15], l[15], m[15], n[15], o[15], p[15];//size of array more than number of entries in data file
float x[15], y[15];



ifstream infile;
infile.open("input.txt");//open the text file

if (!infile)
{
    cout << "Unable to open file";
    exit(1); // terminate with error
}
z=0;
while (!infile.eof())
{
//To make three arrays for each column (a for 1st column, b for 2nd....)

infile>>a>>b>>c>>d>>e>>f>>g>>h;

    i[z]=a;
    j[z]=b;
    k[z]=c;
    l[z]=d;
    m[z]=e;
    n[z]=f;
    o[z]=g;
    p[z]=h;

    x[z]=k[z]+l[z]/60+m[z]/3600;
    y[z]=n[z]+o[z]/60+p[z]/3600;

    cout<<i[z]<<"\t"<<k[z]<<"\t"<< l[z]<<endl;

    z++;
}
 // To print 1st entry (1st row), similarly we can print any row
infile.close();
//getch();

}

我是c ++的新手,任何建议都会有所帮助

1 个答案:

答案 0 :(得分:0)

我认为避免无限循环的最简单方法是std::getline()函数。 您可以使用此代替infile>>a>>b>>c>>d>>e>>f>>g>>h;

string tmp;
stringstream ss;
getline(infile, tmp);
ss << tmp;

然后您可以根据需要拆分线。例如:ss >> a >> b >> c >> d >> e >> f >> g >>h;或  ss >> i[z] >> j[z] >> k[z] >> l[z] >> m[z] >> n[z] >> o[z] >> p[z];

您需要额外的头文件才能使用stringstream:#include <sstream>