C ++从文件中读取错误的值

时间:2011-10-25 15:35:00

标签: c++

我的数据文件包含以下要读取的数字

/*
111
100.00
200.00
50.00
222
200.00
300.00
100
*/

但是在while循环读入customerNumber为100时应该是111,它也会得到其他所有错误的值。比如startsBalance读数为

//-9255963134931783000000000000000000000000.00 

并且其他所有内容似乎都在读取相同的值。我只是在学习文件,所以任何帮助都会非常感激。

#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;

int main()
{

int customerNumber;
double beginningBalance, purchase, payments, financeCharge, endingBalance;
ifstream inputFile;
ofstream outputFile;

inputFile.open("BeginningBalance.dat");
cout<<"Cust No | Beginning Bal | Finance Charge | Purchases | Payments | Ending Balance"<<endl;

while (inputFile >> customerNumber);
    {
     inputFile >> beginningBalance;
     inputFile >> purchase;
     inputFile >> payments;
     financeCharge = beginningBalance * .01;
     endingBalance = beginningBalance + purchase + financeCharge - payments;
     cout<<setw(5)<<customerNumber<<fixed<<setprecision(2)<<"        "<<beginningBalance<<"        "<<financeCharge<<"          "<<purchase<<"       "<<payments<<"       "<<endingBalance<<endl;
    }


system ("PAUSE");
return 0;
}

2 个答案:

答案 0 :(得分:6)

尝试在while循环条件之后删除分号,看看是否修复了它。

所以改变

while (inputFile >> customerNumber);

while (inputFile >> customerNumber)

现在的样子,除非从文件中删除所有数据,否则它什么也没做,然后执行{ ... }内的内容,并且文件读取你在那里做的事情已经在EOF,所以他们不工作。

答案 1 :(得分:0)

文件开头的/ *破坏了您的数据。在您阅读客户编号之前,请先读取两个垃圾字符,然后删除/ *或帐户。

在你需要移除的while循环语句之后,你还有一个分号。