[英]File handling, eof() finction
void Deposit()
{
int amount, AccNo;
cout << "DEPOSITING MONEY\n";
cout << "Enter your account number first: ";
cin >> AccNo;
cout << "Enter the amount you want to deposit: ";
cin >> amount;
ofstream Temp("temp.bin", ios :: binary);
Account temp;
File.seekg(0);
while(File.eof()){
File.read(reinterpret_cast <char*> (&temp), sizeof(Account));
temp.showData();
int flag = temp.returnAccNo();
if(AccNo == flag)
temp.Deposit(amount);
Temp.write(reinterpret_cast <char*> (&temp), sizeof(Account));
}
Temp.close();
File.close();
remove("Account.bin");
rename("temp.bin", "Account.bin");
cout << "Your deposit has been successfully done. Have a nice day! ";
Sleep(1000);
}
為什么這個Deposit()
函數不起作用,我不明白。 當這個函數被調用並且只有兩個對象被寫入文件時,這段代碼中的 while 循環迭代了 3 次,最后寫入的對象被寫入了兩次。 請幫忙!!
你的 while 循環應該是:
while(!File.eof())
但是使用!File.eof()
條件是錯誤的,因為您最終將獲得未初始化的數據( eofbit
將在讀取結束后設置)。 嘗試使用
while(inputStream >> data)
更詳細的解釋可以在這里找到:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.