使用文件结尾条件时,为什么while循环不会退出?

时间:2019-10-17 00:16:49

标签: c++ while-loop eof

当我使用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;
}

输出应向用户显示输入文件中每个项目的每个价格,数量和总成本。

1 个答案:

答案 0 :(得分:0)

我建议采用另一种方法-逐行读取文件,解析每一行,例如:

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;
    }
}