我试图从文件中读取 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 ++的新手。
答案 0 :(得分:0)
阵列的大小固定 在初始化数组之前,必须先获取n的值。
最好仔细检查是否要将该矩阵存储在一维数组或二维数组中。如果它是一维数组,检查矩阵如何存储在一维数组中是好的。有些将它存储在第一行,第二行,......和第n行,有些将它存储在第一列,第二列,......和第n列。
矩阵 n × n ,因此列数等于行数。
该文件一次存储一行。
获得n的价值并不困难。
while循环很关键,但在while循环之前,获取n的值是解决问题的第一步。
当获得n的值时,该阵列易于初始化。 您可以从while循环中的文件中逐个读取该行,使用分隔符作为制表符来获取每个矩阵元素,并将矩阵元素存储在数组中。
答案 1 :(得分:-1)
您必须将自定义输入流与输入文件绑定。假设您的输入文件是&#34; in.txt&#34;它看起来和你指定的一样。
以下代码从文件中读取,将其存储在一维数组中并以矩阵形式打印该矩阵:
#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