如何转换并查找具有多个数字的字符串的总和?

时间:2014-04-03 22:46:06

标签: c++

我正在开发一个项目,我必须从文本文件中找到字符串中一系列数字的总和。我已经创建了代码,我通常可以调用一个函数来转换某些行,但它只对第一个数字执行此操作。

如何修改我的代码,以便我可以在字符串中添加所有数字,而不仅仅是第一个?

案文中的一行是:

34.4 5416.9 1541.9 154.7 816.98

我的代码如下:

   #include <iostream>
   #include<string>
   #include<fstream>
   #include <stdlib.h>
   using namespace std;

   string GetTotal ()
   {
      string total;
      ifstream login("textfile.txt");
      for(int i = 0; i < 6; ++i) // line 6 is where the numbers I need to add are
      { 
         getline(login, total);
      }

   return total;
   }

   int main ()
   {
   string total = GetTotal ();
   double data;
   data = atof(total.c_str()); //convert to double
   cout << data;

   return 0;
   }

输出结果为34.4。

重申我的问题,我应该采取哪些步骤,以便我可以在字符串中添加数字?

2 个答案:

答案 0 :(得分:0)

istringstream ss(total);
vector<double> numbers;
double x;
while (ss >> x)
{
    numbers.push_back(x);
}

现在你有一个所有数字的向量。其余的应该很简单!

答案 1 :(得分:0)

当前代码只返回输入流的第一个元素,即34.4。这是因为atof()将字符串消耗到第一个空白处。

考虑@ Neil对该解决方案的建议。