0

我有一个小问题。我有三个文件,OldMaster、Transaction 和 NewMaster。如果 OldMaster 和 Transaction 之间的帐号匹配,我会更新余额并将其写入 NewMaster。如果它们不匹配,我将原始帐户信息从 OldMaster 写入 NewMaster 并显示错误。

文件 OldMaster 中有 4 个帐户,文件 Transactions 中有 4 个帐户交易。由于某种原因,我的程序没有处理每个文件中的第四个(最后一个)帐户/事务,并且 NewMaster 没有接收数据。

int accountNumber
int accountNum;
string lastName;
string firstName;
float currentBalance;
float dollarAmount;

inOldMaster >> accountNumber >> firstName >> lastName >> currentBalance;
inTransaction >> accountNum >> dollarAmount;

while ( !inOldMaster.eof() && !inTransaction.eof() )
{
    if ( accountNumber == accountNum )
    {
        currentBalance += dollarAmount;
        outNewMaster << accountNum << " " << firstName << " " << lastName << " " 
                     << currentBalance << endl;
    } 
    else if (accountNumber != accountNum)
    {
        outNewMaster << accountNumber << " " << firstName << " " << lastName << " " 
            << currentBalance << endl;
        cout << "Unmatched transaction record for account number: " << accountNum 
            << endl;
    }

    inOldMaster >> accountNumber >> firstName >> lastName >> currentBalance;
    inTransaction >> accountNum >> dollarAmount;
}
4

1 回答 1

2

当您从输入文件中读取数据时,如果在循环中到达文件结尾,则循环将不会继续,因此不会写出新读取的数据。

如果你的情况我会做这样的事情:

do
{
    inOldMaster >> accountNumber >> firstName >> lastName >> currentBalance;
    inTransaction >> accountNum >> dollarAmount;

    if (inOldMaster.bad() || inTransaction.bad())
        break;

    // Your old if-statements

} while (inOldMaster.good() && inTransaction.good());
于 2011-11-28T05:02:17.900 回答