2017-08-16 57 views
0

我想借此函數getline()和輸出它的所有迭代的總和我閱讀該文件。然而,我目前的代碼理念讓程序崩潰。C++函數getline的總和()使用STOD

int main() 
{ 
    // usual read file stuff 
    while (!in.eof())     
    { 

     string total; 
     double balance = stod(total); 
     getline(in, total); 
     cout << "$"; 
     cout << right << setw(10) << total << '.' << cout.precision(2) << endl; 
     //guessing a for loop that would += balance 
} 
+2

請閱讀[爲什麼iostream :: eof內循環條件被認爲是錯誤的?](http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong )另請[請閱讀如何提出良好問題](http://stackoverflow.com/help/how-to-ask),並學習如何創建[最小,***完整***和可驗證示例](http://stackoverflow.com/help/mcve)。你應該也埃裏克利珀閱讀[如何調試小程序(https://ericlippert.com/2014/03/05/how-to-debug-small-programs/),並學習如何使用調試器。 –

+0

順便說一句,當字符串'total'是空的(就像它是當你定義它),你認爲什麼樣的價值'的std :: stod'會回來呢? –

+1

啊,這有點幫助,我認爲每次運行getline()它都會與之平衡。第一次使用getline(),這是否意味着甚至有可能從getline中求和? –

回答

2

問題在於

string total; 
double balance = stod(total); 

聲明字符串後,你不知道什麼std::stod即將回歸

修復:

string total; 
getline(in, total); 
double balance = stod(total); 
+0

這讓我每次都感謝! –

1

您正在嘗試當它有時,將total轉換爲值和null字符串不能轉換爲任何數據類型。這就是爲什麼它會產生異常。分配字符串後,您必須將total加倍。在使用stod()函數之前,請先閱讀total