如何存储在矢量<vector <double>&gt;中?文件中的值?

时间:2016-05-25 03:59:55

标签: c++ vector

Values from txt file

我有.txt文件中的值,我想存储在变量中。在文件的第一行中,我有13个值,也在其他行中,我想以下一个形式存储:

vector<vector<double>> x;

- 第一行

x[0][0] has the value of the first row and first col
x[0][1] has the value of the first row and the second col
x[1][0] has the value of the second row and the first col... and successively

1 个答案:

答案 0 :(得分:0)

  

[编辑]

我不确定我是否正在帮助您解决这个问题,因为您没有提出问题,您没有说出您尝试过的内容以及失败的内容。

你不应该指望人们只是找到问题的解决方案,我只是有兴趣这样做,所以我只是发布了我的发现。

但是这不是这个论坛应该如何运作的,编程是关于学习的,如果你只是在没有尝试也没有解释你的思考过程的问题,直到现在你都不会学习。

无论如何,请阅读这个启发的答案,有一些关键要素需要学习。

  

[/编辑]

此代码的灵感来自于此answer,这有助于您理解C ++的关键概念。

Explanation for the emplace_back vs push_back.

Explanation for the Range-based for loop: "for (auto i : collection)"

#include <vector>
#include <string>
#include <fstream>
#include <sstream>
#include <iterator>
#include <cassert>
#include <iostream>

int main()
{
    std::vector< std::vector<double> > values;

    std::ifstream ifs; 
    std::string line; 
    ifs.open("test.txt"); 
    while(getline(ifs,line)) 
    {
        std::istringstream is(line); 
        std::vector<double> ns; 
        std::copy(std::istream_iterator<double>(is) 
                , std::istream_iterator<double>()  
                , std::back_inserter(ns));

        assert(ns.size() > 1); //throw something

        values.emplace_back(std::vector<double>(ns.begin(), ns.end()));  
    }

    for (auto line : values)
    {
        for (auto value: line)
        { 
            std::cout << value << " "; 
        }
        std::cout << std::endl;
    }
}