2010-04-17 32 views
0

我读的格式如下C++问题字符串流istringstream

1001 16000  300 12.50 
2002 24000  360 10.50 
3003 30000  300  9.50 

其中的项目是一个文件:贷款ID,本金,月利率。

我不确定这是什么,我做错了我的输入字符串流,但我没有正确读取值,因为只有贷款ID被正确读取。其他一切都是零。对不起,这是一项家庭作业,但我只想知道你是否可以帮助我找出我的错误。

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; 

     } 
    } 

回答

3

您没有阅读linewise。如果你使用operator>>它将只提取第一个字line

while(getline(inputstream, line)) 

更换条件。

+0

你是对的。解决了这个问题。谢谢。 – user69514 2010-04-17 16:44:17