C le problème avec flux de chaîne istringstream
-
27-09-2019 - |
Question
Je suis en train de lire un fichier dans le format suivant
1001 16000 300 12.50
2002 24000 360 10.50
3003 30000 300 9.50
où les éléments sont les suivants:. Id prêt, principal, mois, taux d'intérêt
Je ne suis pas sûr de ce qu'il est que je fais mal avec mon flux de chaîne d'entrée, mais je ne suis pas en train de lire correctement les valeurs parce que l'identifiant de prêt est lu correctement. Tout le reste est nul. Désolé, c'est un devoir, mais je voulais juste savoir si vous pouviez me aider à identifier mon erreur.
if( inputstream.is_open() ){
/** print the results **/
cout << fixed << showpoint << setprecision(2);
cout << "ID " << "\tPrincipal" << "\tDuration" << "\tInterest" << "\tPayment" <<"\tTotal Payment" << endl;
cout << "---------------------------------------------------------------------------------------------" << endl;
/** assign line read while we haven't reached end of file **/
string line;
istringstream instream;
while( inputstream >> line ){
instream.clear();
instream.str(line);
/** assing values **/
instream >> loanid >> principal >> duration >> interest;
/** compute monthly payment **/
double ratem = interest / 1200.0;
double expm = (1.0 + ratem);
payment = (ratem * pow(expm, duration) * principal) / (pow(expm, duration) - 1.0);
/** computer total payment **/
totalPayment = payment * duration;
/** print out calculations **/
cout << loanid << "\t$" << principal <<"\t" << duration << "mo" << "\t" << interest << "\t$" << payment << "\t$" << totalPayment << endl;
}
}
La solution
Vous ne lisez pas linewise. Remplacer la condition par
while( getline(inputstream, line) )
Si vous utilisez operator>>
il extraira seul le premier mot à line
.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow