2011-10-25 185 views
0

我的數據文件包含以下數字錯誤的值在C++閱讀從文件

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

被讀取,但while循環customerNumber之原文100之後,它應該是111,它獲得的該值一切都是錯的。如beginBalance的讀數爲

//-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; 
} 
+0

您是否嘗試刪除'/ *'和'* /'並查看會發生什麼? – hochl

+0

數據文件中實際是'/ *'還是'* /'? – trojanfoe

+3

不要使用雙打財務數據。 – kan

回答

6

嘗試從while循環條件之後刪除分號,看看是否修復了它。

因此改變

while (inputFile >> customerNumber); 

while (inputFile >> customerNumber) 

,現在是這樣的,它什麼也不做,直到它從文件吃掉了所有的數據,然後是否{ ... }裏面的東西,並且您在那裏執行的文件已經在EOF中,因此它們不起作用。

+0

+1好主意:) –

+0

這樣做我有時候很無心:] – sircrisp

+0

更正正確:很好! – trojanfoe

0

文件開頭處的/ *會破壞您的數據。在閱讀客戶號碼之前,先閱讀兩個垃圾字符,然後刪除/ *或帳戶。

此外,您需要刪除while循環語句後有一個分號。