如何从C ++中的文件中读取矩阵?

时间:2016-02-28 16:49:05

标签: c++ matrix file-io

我试图从文件中读取 n × n 矩阵,然后将该矩阵存储在一维数组中。我还想存储 n 的值。我已经研究了各种方法,但似乎无法将它们应用到我想要实现的目标上。

这是我到目前为止所做的,但我不确定将什么放入while循环。

/*READ IN THE IMAGE MATRIX FROM THE FILE*/

String lineA;
ifstream imFile;
imFile.open("imageMatrixDefined.txt");
if(imFile.fail()){
    cerr << "File cannot be found or opened" << endl;
    exit(1);
}

if(imFile.is_open(){
    cout << "file opened successfully!" << endl;
    while(!imFile.eof()){    
    }
}

输入文件可能如下所示:

1    2    3
2    3    1
3    3    2

其中标签分隔元素。 任何建议都会非常感激,因为我是C ++的新手。

2 个答案:

答案 0 :(得分:0)

阵列的大小固定 在初始化数组之前,必须先获取n的值。

最好仔细检查是否要将该矩阵存储在一维数组或二维数组中。如果它是一维数组,检查矩阵如何存储在一维数组中是好的。有些将它存储在第一行,第二行,......和第n行,有些将它存储在第一列,第二列,......和第n列。

矩阵 n × n ,因此列数等于行数。
该文件一次存储一行。 获得n的价值并不困难。

while循环很关键,但在while循环之前,获取n的值是解决问题的第一步。

当获得n的值时,该阵列易于初始化。 您可以从while循环中的文件中逐个读取该行,使用分隔符作为制表符来获取每个矩阵元素,并将矩阵元素存储在数组中。

答案 1 :(得分:-1)

您必须将自定义输入流与输入文件绑定。假设您的输入文件是&#34; in.txt&#34;它看起来和你指定的一样。

以下代码从文件中读取,将其存储在一维数组中并以矩阵形式打印该矩阵:

#include <iostream>
#include <fstream>
using namespace std;

int main () {
  ifstream myfile;
  myfile.open ("in.txt");

  cout << "Reading from a file.\n";
  int arr[10];
  int k = 0;
  for (int i = 0; i < 3; ++i)
  {
    for (int j = 0; j < 3; ++j)
    {
        cin >> arr[k];           //Read it in a 1D array   
        cout << arr[k] << "  ";
        ++k;
    }
    cout << "\n";
  }

  myfile.close();

  return 0;
}

输出:

Reading from a file.
1  2  3  
2  3  1  
3  3  2