Редактировать
Глядя на ваш ввод, вы не можете прочитать такой сложный ввод, просто
while(fileIn >> acctNum >> acctBal >> monthlyFee >> checks)
Этот код настроен для чтения данных, отформатированных в следующей форме:
11 12.12 11.11 13.13 14.12
11 12.12 11.11 13.13 14.12
11 12.12 11.11 13.13 14.12
Вместо этого вам придется читать различные строки и тому подобное, прежде чем извлекать нужные данные. Например, чтобы пропустить слово «Аккаунт» ниже, вы можете прочитать его в фиктивную строку
Account Number#1234
std::string dummy;
fileIn >> dummy; // read up to the whitespace,
// in this case reads in the word "Account"
Тогда Чтобы получить число, вам нужно прочитать следующую строку и извлечь # 1234
std::string temp;
fileIn >> temp; // read up to the whitespace,
// in this case reads in the word "Number#1234"
Но вы также можете использовать getline для чтения до # 1020 включительно
std::getline(fileIn, dummy, '#');
Затем прочитайте число после #
int acctNum = 0;
fileIn >> acctNum;
Так что, если ваш ввод действительно отформатирован, как вы описываете, вам придется потратить гораздо больше времени на выяснение того, как анализировать ваши данные, чем вы могли ожидать. Я не знаю достаточно о том, как ваш вклад должен дать вам полный ответ, но, надеюсь, приведенное выше должно помочь вам начать.
(При желании вы можете узнать о регулярных выражениях, но на данный момент вы можете просто захотеть изучить основы.)
Оригинал
Я только что опробовал ваш код, и с достаточно хорошо отформатированными значениями на входе он работает в g ++. Однако одна вещь, которую я с осторожностью смотрю на ваш код, это строка:
while(fileIn >> acctNum >> acctBal >> monthlyFee >> checks)
Если что-либо из вышеперечисленного не удается прочитать из-за преждевременного завершения файла, ваш cout не будет выполнен, что не приведет к выводу на экран. Имеет ли ваш вклад все вышеперечисленные значения? Они хорошо отформатированы? Для отладки я мог бы попытаться разбить чтение:
while (fileIn)
{
fileIn >> acctNum;
std::cout << "Acct num is:" << acctNum << std::endl;
...
}
или просто перейдите к отладчику.
Например, для этого ввода:
11 12.12 11.11 13.13 14.12
ваш код распечатывается
Bank Account records:
Account#BalanceInterestMonthly FeeAllowed Checks
11 12.126.93517e-31011.1113 `
Но прикручиваем к вводу и добавляем куда-то случайный нечисловой символ, т.е.
11 * 12.12 11.11 13.13 14.12
заставляет меня получить только
Bank Account records:
Account#BalanceInterestMonthly FeeAllowed Checks
Так что я бы определенно по кусочкам посмотрел на то, что читается и где сбой чтения из fileIn
, это определенно вызовет ваши проблемы.
Вы знаете, конечно, чтобы удалить ios::out
, как указано здесь