【问题标题】:How to read in a matrix from a file in C++?如何从 C++ 文件中读取矩阵?
【发布时间】:2016-02-28 16:49:05
【问题描述】:

我正在尝试从文件中读取 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++ 新手。

【问题讨论】:

  • 您的输入格式看起来如何?但无论如何while (!imFile.eof()) { … } 几乎肯定是错误的。
  • 你能从 tbe 文件中读取一个数字吗?
  • 请通过editing 直接将该信息添加到您的问题中。
  • 在互联网上搜索“c++ 读取文件矩阵”。这里已经问过太多类似的问题了。

标签: c++ matrix file-io


【解决方案1】:

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

最好仔细检查您是否希望将该矩阵存储在一维数组或二维数组中。如果是一维数组,检查一下矩阵是如何存储在一维数组中的就好了。有的存储第一行、第二行、...、第n行,有的存储第一列、第二列、...、第n列。

矩阵是n × n,所以列数等于行数。
该文件一次存储一行。 得到 n 的值并不难。

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

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

【讨论】:

    【解决方案2】:

    您必须将自定义输入流与您的输入文件绑定。假设您的输入文件是“in.txt”,它看起来与您指定的相同。

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

    #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  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      相关资源
      最近更新 更多