c++怎么将.txt中的数据读入二维数组中

c++如何将.txt中的数据读入二维数组中?
例如有这样的数据:
1 4 67 77 89......
2 4 56 78 82......
..........
数据的行数和列数位置。大家帮帮忙吧,初学c++,有好多地方不懂啊。尤其是动态生成二维数组。

------解决方案--------------------
C/C++ code

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

int main() 
{ 
    
    int n,m;
    cin>>n>>m;//输出入行列
    int i,j;

    //动态申请二维数组
    int **a;
    a=new int*[n];
    for(i=0;i<n;i++)
        a[i]=new int[m];
    
    ifstream fin("in.txt");//打开文件
    //读入数字
    for(i=0;i<n;i++)
        for(j=0;j<m;j++) fin>>a[i][j];
    fin.close();
    //输出刚刚读入的数据
    for(i=0;i<n;i++,cout<<endl)
        for(j=0;j<m;j++) cout<<a[i][j];

    //释放申请的空间
    for(i=0;i<n;i++) delete []a[i];
    delete []a;
    return 0; 
}

------解决方案--------------------
使用指向指针的指针
如: int row = 100;
int col = 100;
int **row = new int[row];
for (int i = 0; i < col; ++i)
{
row[i] = new int[col];
}
这样就可以像使用二维数组一样使用了,不过删除麻烦

还可以使用一维计算位置的方式计算出来,数据结构里面好像讲到过相关的东西
------解决方案--------------------
C/C++ code


#include "stdio.h"
#include <stdlib.h>
int average(char *pFilePath);
void main()
{
    FILE *fp;
    int nData[10];
    for(int i=0;i<10;i++)
    {
        printf("请输入第%d个数:",i+1);
        scanf("%d",nData+i);
    }
    fp = fopen("c:\\data.txt", "wb");//b表示以二进制的形式写入文件
    if(fp!=NULL)
    {
        fwrite(nData,sizeof(int),10,fp);
        fclose(fp);
        //写完文件后,可以看一下文件大小,40个字节,
        //其实就是数组的大小  sizeof(int)*10 = 40   以前在学校里没搞明白的问题,现在明白了
    }

    printf("平均值大小:%d\n",average("c:\\data.txt") );


    system("pause");
}

int average(char *pFilePath)
{
    int nData[10]={0};
    FILE *fp;
    fp = fopen(pFilePath, "rb");//b表示以二进制的形式
    if(fp!=NULL)
    {
        fread(nData,sizeof(int),10,fp);
        fclose(fp);    
    }
    else
    {
        printf("读取文件出错了...");
        return 0 ;
    }

    int nSum = 0 ;
    for(int i=0;i<10;i++)
    {
        printf("第%d个数:\t内存地址%8x\t值:%d\n",i+1,nData+i,*(nData+i));
        nSum += *(nData+i) ;
    }
    return nSum/10;
}

//发个二进制读写文件的