我试图从两个文本文件中读取整数并将元素分配给二维数组(更广泛的程序的目的是将两个方形矩阵相乘)但我认为有一些关于我不理解的数组指针。这是问题部分的代码片段(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文件中的整数数,并返回正确的值。