为什么到达文件末尾时文件循环的结尾不会停止?

时间:2019-10-18 19:42:41

标签: c++ while-loop eof

此程序从文件中获取输入,并计算所有项目的成本和总计并将其显示给用户。输入文件中的项目数未知,因此我尝试使用eof while循环。我的输入文件包含以下数据。

''' 16.00 24

7.47 13

2.10 15

12.47 18

我的循环到达文件末尾时不会退出吗?我想念什么吗?这是我的代码。

#include <iostream>
#include <iomanip>
#include <fstream>

using namespace std;

int main() {

   ifstream inFile;
   float price, total, gst, grandTotal, sum;
   int item, quantity;

   inFile.open("data.in");


   const float GST = 1.05;

   cout << setw(20) << left << setfill(' ') << \
"Item Number"
        << setw(20) << right << setfill(' ') <<\
 "Unit Price"
        << setw(20) << right << setfill(' ') <<\
 "Quantity"
        << setw(20) << right << setfill(' ') <<\
 "Item Total"
        << endl << endl;

   sum = 0;
   item = 1;

   inFile >> price >> quantity;

do {
       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;
       item ++;
       inFile >> price >> quantity;

   } while (!inFile.eof());

   inFile.close();
   gst = sum * GST;
   grandTotal = sum + gst;

   cout << setw(60) << right << setfill(' ') <<\
 "GST"
        << setw(15) << right << setfill(' ') <<\
 "$" << gst
        << endl << endl;

   cout << setw(60) << right << setfill(' ') <<\
 "Grand Total"
        << setw(14) << right << setfill(' ') <<\
 "$" << grandTotal
        << endl;


   return 0;
}
'''

0 个答案:

没有答案