簡體   English   中英

文件處理,eof() 函數

[英]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)

更詳細的解釋可以在這里找到:

為什么 iostream::eof 在循環條件(即`while (!stream.eof())`)中被認為是錯誤的?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM