c++ - 当我使用文件结束条件时,为什么我的 while 循环不会退出?
问题描述
当我用来控制何时停止时,我的while
循环不会退出。eof
输入文件在同一行包含价格和数量,下一行具有相同的价格和数量,但价格和数量不同。
sum = 0
item = 0
in >> price >> quantity;
while (!in.eof())
{
item ++;
total = price * quantity;
sum = sum + total;
cout << setw(20) << left << setfill(' ') \
<< item
<< setw(20) << right << setfill(' ')\
<< price
<< setw(20) << right << setfill(' ')\
<< quantity
<< setw(20) << right << setfill(' ')\
<< total
<< endl << endl;
in >> price >> quantity;
}
输出应向用户显示输入文件中每个项目的每个价格、数量和总成本。
解决方案
我会建议一种不同的方法 - 逐行读取文件,解析每一行,例如:
sum = 0;
item = 0;
string line;
while (getline(in, line))
{
istringstream iss(line);
if (iss >> price >> quantity)
{
++item;
total = price * quantity;
sum += total;
cout << setw(20) << left << setfill(' ') << item
<< setw(20) << right << setfill(' ') << price
<< setw(20) << right << setfill(' ') << quantity
<< setw(20) << right << setfill(' ') << total
<< endl << endl;
}
}