在C ++中将整数从文件读入二维数组

时间:2017-10-31 22:27:30

标签: c++ arrays

我试图从两个文本文件中读取整数并将元素分配给二维数组(更广泛的程序的目的是将两个方形矩阵相乘)但我认为有一些关于我不理解的数组指针。这是问题部分的代码片段(mat1size / mat2size由先前的函数确定,该函数计算文件中矩阵的大小,mat1file / mat2file只是带有矩阵的ifstream文件):

const int size = sqrt(mat1size);

int** mat1 = NULL;
mat1 = new int *[size];

int** mat2 = NULL;
mat2 = new int *[size];

for (int row = 0; row != size; ++row)
{
    mat1[row] = new int[size];
    mat2[row] = new int[size];
}

for (int i = 0; i != size; ++i)
{
    for (int j = 0; j != size; ++j)
    {
        mat1file >> mat1[i][j];
        cout << mat1[i][j];
    }
}

当我运行此代码时,它将-842150451打印到屏幕32次(对于两个具有16个条目的矩阵),而不是实际存储在数组中的内容,即整数1-32。我对指针比较陌生,所以我怀疑这与引发问题的数组指针有关,但我已经尝试了几件事但没有成功。

提前致谢!

编辑:这是mat1file和mat2file在代码中先前定义的方式:

ifstream mat1file, mat2file; string mat1loc, mat2loc;

cout << "Enter the file address of the first matrix: "; cin >> mat1loc;
cout << "\n Enter the file address of the second matrix: "; cin >> mat2loc;

mat1file.open(mat1loc); mat2file.open(mat2loc);

if (!mat1file.good() || !mat2file.good())
{
    cout << "Error: One or both file locations were not recognised. Program aborted. ";
    return 1;
}

用户输入与问题并不相关,我的计算机上保存了两个文件,每个文件包含以下列格式排列的16个数字:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

我知道文件打开工作,因为我有一个单独的函数,它检查ifstream文件中的整数数,并返回正确的值。

0 个答案:

没有答案