2011-12-06 201 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