2016-02-28 348 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