2017-08-16 107 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