首页 > 解决方案 > 当我使用文件结束条件时,为什么我的 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;
}

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

标签: c++while-loopeof

解决方案


我会建议一种不同的方法 - 逐行读取文件,解析每一行,例如:

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

推荐阅读