如何从文件中读取矩阵并对其进行一些更改,然后再次将其写入文件?

How to read the matrix from file and make some change in it and again write it to the file?

如何从文件中读取矩阵的内容到矩阵中。所以我可以用它来更新其中的一些值,然后再次将其复制到矩阵中...

首先,我检查文件是否为空,如果它是空的,那么我写一个所有值为零的矩阵,如果它不为空,那么我从文件中读取值并将其放入矩阵然后我在其中进行一些更新并将其写回文件并更新值...但是我无法从文件中读取矩阵。

提前致谢(初学者)。

请帮助我,我尝试了很多次但我做不到,这是我项目的一部分。

#include <bits/stdc++.h>
using namespace std;

class block{



public:

void inc(int arr[][10])

{ int k;
 cout<<"by how much value do you want to increment the array's values"<<endl;
 cin>>k;
 for(int i=0 ; i<10; i++)
        for(int j  =0 ; j<10 ; j++)
        arr[i][j] = arr[i][j] + k;


        for(int i=0 ; i<10; i++)
        {
            for(int j  =0 ; j<10 ; j++)
            {

        cout<<arr[i][j];
            }
            cout<<endl;
        }


}

    void details(int arr[][10])
    {

        int m1 = 10;
        int n1 = 10;
        int arr1[10][10];

        ifstream fin1;
        fin1.open("array.txt", ios::ate);

        if (!fin1) {
            cerr << strerror(errno) << "\n"; // handle open errors
        }
        if (fin1.tellg() == 0) {
            cout << "NULL" << endl;

            ofstream fout1;
            fout1.open("array.txt");
            for (int i = 0; i < m1; i++) {

                for (int j = 0; j < n1; j++) {
                    fout1 << arr[i][j];               //if file is empty write
                                                      //matrix with zero value
                    arr1[i][j] = arr[i][j];
                }
            }

            fout1.close();
        }

        else {

            fin1 >> m1 >> n1;

            for (int i = 0; i < m1; i++)        // this is the code of reading of
                for (int j = 0; j < n1; j++)    //matrix from the file
{  
                    fin1 >> arr[i][j];
                    arr1[i][j] = arr[i][j];
                }
        }

        fin1.close();

       inc(arr1);   // updating matrix


        ofstream fout2;
        fout2.open("array.txt", ios::trunc | ios::out);

        for (int i = 0; i < m1; i++)
            for (int j = 0; j < n1; j++) {    // write back to its file with 
                                               //updated value 

                arr[i][j] = arr1[i][j];
                fout2 << arr[i][j];
            }
        fout2.close();
    }
};
int main()
{
    block b1;

    int arr[10][10];
    for (int i = 0; i < 10; i++)
        for (int j = 0; j < 10; j++)
            arr[i][j] = 0;
    b1.details(arr);
}

下面是一个如何从文件中读取矩阵的例子

#include <fstream>
#include <iostream>
#include <cstring>

int main() {
    int arr[10][10];
    for (std::size_t i = 0; i < 10; i++)
        for (std::size_t j = 0; j < 10; j++)
            arr[i][j] = 0;
    
    std::size_t m1 = 10;
    std::size_t n1 = 10;

    std::ifstream fin1("array.txt");

    if (!fin1) {
        std::cerr << std::strerror(errno) << "\n"; // handle open errors
    }

    fin1 >> m1 >> n1;

    for (std::size_t i = 0; i < m1; i++) // this is the code of reading of
        for (std::size_t j = 0; j < n1; j++) { //matrix from the file
            fin1 >> arr[i][j];
        }
    fin1.close();
    
    for (std::size_t i = 0; i < 10; i++) {
        for (std::size_t j = 0; j < 10; j++) {
            std::cout << arr[i][j] << ' ';
        }
        std::cout << '\n';
    }
}

带输入文件

10
10
1 2 3 4 5 6 7 8 9 0
11 2 3 4 5 6 7 8 9 0
21 2 3 4 5 6 7 8 9 0
31 2 3 4 5 6 7 8 9 0
41 2 3 4 5 6 7 8 9 0
51 2 3 4 5 6 7 8 9 0
61 2 3 4 5 6 7 8 9 0
71 2 3 4 5 6 7 8 9 0
81 2 3 4 5 6 7 8 9 0
91 2 3 4 5 6 7 8 9 0