2011-12-06 78 views
2

我得到了一個帶有雙矩陣50x8的txt文件。前兩行包含數組大小 50x8矩陣。當我TRID讀取此文件與上面的代碼:從txt讀取文件

#include<iostream> 
#include<fstream> 

using namespace std; 

int main() { 

    ifstream infile; 
    infile.open("C:/Users/zenitis/Desktop/BTHAI_2.3b-src/BTHAI/txtFiles/W1.txt"); 
    double events[50][8]; 

    while (!infile.eof()) 
    { 
     for(int j=0;j<50;j++) 
     { 
      for(int k=0; k<8;k++) 
      { 
       infile >> events[j][k]; 
       // infile.get(c 
      } 
     } 
    } //end while 

    infile.close(); 

    for(int i = 0; i<50; i++){ 

     for(int l=0; l<8; l++){ 
      cout << events[i][l] << " "; 
     } 

     cout << "\n"; 
    } 

    cout << events[0][0]; 

    system("pause");  
    return 0; 
} 

首先,當我打印結果的事件矩陣的前兩個元素是文件的最後兩個。其次,有什麼想法如何只讀取兩個實際上是矩陣大小的第一個元素?

回答

3

你讀的行和列數是這樣的:

int R, C; 
infile >> R; 
infile >> C; 

您讀取文件的其餘部分嵌套循環之前做到這一點。然後你使用文件中的數字作爲你的循環結束目標,而不是硬編碼的50和8.

+0

xm謝謝你,它的工作原理。 –

+0

此外,while循環不需要。 while循環內的代碼讀取一個完整的矩陣。 while循環因此讀取許多矩陣,這不是你想要的。刪除這行:'while(!infile.eof())'及其大括號('{'和}})。 –

+0

@snakeplissken:「xm感謝的人,它的作品。」是最好的表達「[通過點擊答案左側的複選框大綱](http://stackoverflow.com/faq#howtoask)。」 – Johnsyweb