如何将文件中的数字输入矩阵?

时间:2016-08-18 03:49:33

标签: c++ matrix

由于某种原因,在从文件输入值后,矩阵中每个数字的值都为零。当我使用全零初始化矩阵时它起作用,但无论出于何种原因,我都无法从文本文件中导入数字。

profile(passport)

...

struct Vector {
  float* els;  
  int len;
    };

struct Matrix {
  Vector* col;  // col is array of Vectors; each Vector is one column of matrix 
  int ncols;    // total number of columns in matrix
};

...

ifstream fin("mat.def");
fin >> m >> n;
fin >> M;

1 个答案:

答案 0 :(得分:0)

您尚未显示任何设置nm.ncols值的代码。我的猜测是nm.cols的值在使用之前未正确设置。

我建议稍微改变策略。而不是

fin >> m >> n;
fin >> M;

使用

fin >> M;

并确保在operator>>函数中读取列数和行数。

std::istream& operator>>(std::istream& input, Matrix& mm)
{
   int rows;
   input >> mm.ncols;
   input >> rows;

   mm.col = new Vector[mm.ncols];

   for (int i=0;i<mm.ncols;i++)
   {
      mm.col[i].len = rows;
      mm.col[i].els = new float[rows];
      for (int k=0;k<rows;k++) {
         input >> mm.col[i].els[k];
      }
   }

   return input;
}