2010-04-17 16 views
0

Je lis un fichier dans le format suivantC++ problème avec flux de chaîne istringstream

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 que je fais mal avec mon flux de chaîne d'entrée, mais je ne lis pas les valeurs correctement parce que seul l'ID de prêt est lu correctement. Tout le reste est nul. Désolé c'est un devoir, mais je voulais juste savoir si vous pourriez m'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; 

     } 
    } 

Répondre

3

Vous ne lisez pas les lignes. Remplacer la condition par

while(getline(inputstream, line)) 

Si vous utilisez operator>> il extraira seul le premier mot à line.

+0

vous avez raison. cela a réglé le problème. Merci. – user69514