2016-02-28 345 views
2

我正在尝试从中读取× n矩阵从一个文件,然后将该矩阵存储在一维数组。我还想存储的值n。我已经研究了各种方法,但似乎无法将它们应用于我试图实现的目标。如何从C++文件中读取矩阵?

这是我迄今为止,但我不确定什么放入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++。

+1

请问你的输入格式看?但是'while(!imFile.eof()){...}'无论如何肯定是错误的。 – 5gon12eder

+0

你可以从tbe文件读取一个数字吗? –

+0

请直接通过[编辑]将它添加到您的问题中。 – 5gon12eder

回答

0

数组的大小是固定的。
在初始化数组之前,您必须先获取n的值。

很好,仔细检查是否要将该矩阵存储在一维数组或二维数组中。如果它是一维数组,则检查矩阵如何存储在一维数组中是很好的。一些存储它的第一行,第二行,...和第n行,有些存储它的第一列,第二列,...和第n列。

的矩阵是Ñ × Ñ,所以列的数目等于行数。
该文件一次存储一行。 获得n的值并不困难。

while循环很重要,但在while循环之前,获取n的值是解决问题的第一步。

当获得n的值时,该数组很容易被初始化。 您可以从while循环中的文件逐一读取一行,通过使用分隔符作为制表符来获取每个矩阵元素,并将矩阵元素存储在数组中。

-1

您必须将自定义输入流绑定到您的输入文件。假设你的输入文件是“in.txt”,它看起来和你指定的一样。

下面的代码从文件中读取,并将其存储在一维数组和矩阵的矩阵形式印:

#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