我有.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
答案 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;
}
}