从文本文件中保存双打以供以后使用C ++

时间:2016-02-28 21:03:23

标签: c++ arrays input double

我想从每行3个双打的文本文件中读取3个双打(事先确定行数不确定)。然后将这些双打保存到3个不同的阵列中以便稍后使用双打。或者一次读取1行程序,保存它所在的行,使用我需要的3个双打然后转到下一行使用接下来的3个双打。

哪种方法更适合使用/保存这些双打?

如果数组是保存它们的更好方法,我怎样才能创建一个数组来计算文件的行数以了解它应该有多少个元素,并在读取文件时将值保存在正确的数组中? / p>

到目前为止,我的文件阅读代码如下所示

ifstream theFile("pose.txt");
double first,second,third;
while(theFile >> first >> second >> third){
    cout<<first<<" " << second <<" "<< third<<endl;
    /*some code here to save values in different arrays for
     use later or use the 3 values straight away while keeping the line
     number and then moving on to the next line to use those values
     straight away*/
}

欢迎任何有关问题的代码或建议的帮助,

感谢。

编辑:首先,我不确定将值保存到数组中的逻辑是否正确设计;其次,我不确定如何将这三个值添加到循环内的不同数组中。 / p>

2 个答案:

答案 0 :(得分:0)

结构的一些向量可能会有所帮助:

struct Values {
    double first;
    double second;
    double third;
};

std::vector<Values> v;

while(theFile >> first >> second >> third){
    cout<<first<<" " << second <<" "<< third<<endl;
    Values values;
    values.first = first;
    values.second = second;
    values.third = third;
    v.push_back(values);
}

要将其与行号相关联,您还可以使用地图

std::map<int,Values> m;
int lineno = 1;
while(theFile >> first >> second >> third){
    cout<<first<<" " << second <<" "<< third<<endl;
    Values values;
    values.first = first;
    values.second = second;
    values.third = third;
    v[lineno++] = values;
}

答案 1 :(得分:0)

使用stringstreams(#include <sstream>)应该会有所帮助。

// Example program
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
    string line;
    while(getline(cin,line))
    {
        stringstream str(line); //declare a stringstream which is initialized to line
        double a,b,c;
        str >> a >> b >> c ;
        cout << "A is "<< a << " B is "<< b << " C is " << c <<endl; 
    }
}