我正在开发一个项目,我必须从文本文件中找到字符串中一系列数字的总和。我已经创建了代码,我通常可以调用一个函数来转换某些行,但它只对第一个数字执行此操作。
如何修改我的代码,以便我可以在字符串中添加所有数字,而不仅仅是第一个?
案文中的一行是:
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。
重申我的问题,我应该采取哪些步骤,以便我可以在字符串中添加数字?
答案 0 :(得分:0)
istringstream ss(total);
vector<double> numbers;
double x;
while (ss >> x)
{
numbers.push_back(x);
}
现在你有一个所有数字的向量。其余的应该很简单!
答案 1 :(得分:0)
当前代码只返回输入流的第一个元素,即34.4。这是因为atof()
将字符串消耗到第一个空白处。
考虑@ Neil对该解决方案的建议。