我在"撤消"这个方法时遇到了麻烦,它基本上将一个可变大小的数字矩阵转储到一个文本文件中:
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);
}
我无法实现反向:
vector<vector<double>> fileToVector(char *name){ ??? }
我保证文件中的数字形成一个"矩形",即内部向量的大小都相等,但我不知道如何计算每行的条目数和列数.
谁能指出我正确的方向?到目前为止,我发现的每个例子都使用硬编码的大小或第一行中给出的大小(不幸的是我承担不起)
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;
}