如何在文件中存储矢量<矢量<double>>值?

How can I store in a vector<vector<double>> values from a File?

本文关键字:lt gt 矢量 double 文件 存储      更新时间:2023-10-16

txt 文件中的值

我有一个来自.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

[编辑]

不确定我是否在帮助你回答这个答案,因为你没有提供问题,你没有说你尝试了什么,失败了什么。

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

这不是这个论坛应该如何运作的,编程是关于学习的,如果你只是问而不尝试或解释你的思维过程是什么,直到现在你就不会学习。

无论如何,阅读这个灵感来自的答案,有一些关键元素可以学习。

[/编辑]

代码的灵感来自此答案,应该有助于您理解C++的关键概念。

emplace_back与push_back的解释。

基于范围的 for 循环的说明:"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;
    }
}