我在"撤消"这个方法时遇到了麻烦,它基本上将一个可变大小的数字矩阵转储到一个文本文件中:
void vectorToFile(char *name, vector<vector<double>>* a){
FILE* fp = fopen(name, "w");
for(int i=0;i<a->size();i++){
for(int j=0;j<a->at(i).size();j++){
fprintf(fp, "%f ", a->at(i).at(j));
}
fprintf(fp, "\n");
}
fclose(fp);
}
Run Code Online (Sandbox Code Playgroud)
我无法实现反向:
vector<vector<double>> fileToVector(char *name){ ??? }
Run Code Online (Sandbox Code Playgroud)
我保证文件中的数字形成一个"矩形",即内部向量的大小都相等,但我不知道如何计算每行的条目数和列数.
谁能指出我正确的方向?到目前为止,我发现的每个例子都使用硬编码的大小或第一行中给出的大小(不幸的是我承担不起)
dre*_*lax 10
我是C++的新手,所以我不确定这是不是一个好方法,但我会打开文件,逐行读入输入,在读取时解析每一行.这是一些示例代码(未经测试,未编译):
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
#include <vector>
std::vector<std::vector<double> > fileToVector(const char *name)
{
std::vector<std::vector<double> > result;
std::ifstream input (name);
std::string lineData;
while(getline(input, lineData))
{
double d;
std::vector<double> row;
std::stringstream lineStream(lineData);
while (lineStream >> d)
row.push_back(d);
result.push_back(row);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)