Editer
En regardant vos données, vous ne pouvez pas lire des données aussi complexes avec seulement
while(fileIn >> acctNum >> acctBal >> monthlyFee >> checks)
Ce code est configuré pour lire des données formatées de la manière suivante :
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
Au lieu de cela, vous devrez lire les différentes chaînes de caractères et autres avant d'extraire les données dont vous avez besoin. Par exemple, pour ignorer le mot "Account" ci-dessous, vous pouvez le lire dans une chaîne fictive
Account Number#1234
std::string dummy;
fileIn >> dummy; // read up to the whitespace,
// in this case reads in the word "Account"
Ensuite, pour obtenir le numéro, il faut lire la chaîne suivante et extraire le #1234.
std::string temp;
fileIn >> temp; // read up to the whitespace,
// in this case reads in the word "Number#1234"
Mais vous pouvez aussi utiliser getline à lire jusqu'au # inclus
std::getline(fileIn, dummy, '#');
Lisez ensuite le numéro qui suit le #
int acctNum = 0;
fileIn >> acctNum;
Donc, si vos données sont vraiment formatées comme vous le décrivez, vous devrez passer beaucoup plus de temps à comprendre comment analyser vos données que vous ne l'auriez imaginé. Je n'en sais pas assez sur la façon dont vos données sont censées être traitées pour vous donner une réponse complète, mais ce qui précède devrait, je l'espère, vous aider à démarrer.
(Vous pouvez éventuellement vous familiariser avec les expressions régulières, mais à ce stade, vous souhaitez peut-être vous contenter d'apprendre les bases).
Original
Je viens d'essayer votre code et avec suffisamment de valeurs bien formatées dans l'entrée, il fonctionne dans g++. Cependant, une chose dont je me méfie en regardant votre code est cette ligne :
while(fileIn >> acctNum >> acctBal >> monthlyFee >> checks)
Si l'un des éléments ci-dessus ne parvient pas à être lu parce que le fichier se termine prématurément, votre cout ne sera pas exécuté, ce qui n'entraînera aucune sortie à l'écran. Votre entrée contient-elle toutes les valeurs ci-dessus ? Sont-elles bien formatées ? Pour déboguer, je pourrais essayer de diviser les lectures :
while (fileIn)
{
fileIn >> acctNum;
std::cout << "Acct num is:" << acctNum << std::endl;
...
}
ou simplement à l'aide d'un débogueur.
Par exemple, pour cette entrée :
11 12.12 11.11 13.13 14.12
votre code s'imprime
Bank Account records:
Account#BalanceInterestMonthly FeeAllowed Checks
11 12.126.93517e-31011.1113 \`
Mais si l'on modifie l'entrée et que l'on ajoute un caractère non numérique aléatoire quelque part, c'est-à-dire que l'on ajoute un caractère non numérique aléatoire :
11 * 12.12 11.11 13.13 14.12
me permet d'obtenir juste
Bank Account records:
Account#BalanceInterestMonthly FeeAllowed Checks
C'est pourquoi j'examinerais certainement, pièce par pièce, ce qui est lu et d'où provient la lecture. fileIn
est défaillant, ce qui est certainement la cause de vos problèmes.
Vous savez bien sûr qu'il faut retirer le ios::out
comme spécifié aquí