我有一个带有数据的文本文件名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 ++的新手,任何建议都会有所帮助
答案 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>
。