2017-09-16 35 views
-1

我有一个包含以下行的输入文件:读取一条线的整数成二维阵列

15​​ 14​ ​13​ ​12 ​11​ ​30​ ​29​ ​28​ ​27 ​26​ ​45​ ​44​ ​43​ ​42 ​41 ​60​ ​59​ ​58​ ​57​ ​56​ ​75​ ​74​ ​73 ​72​ ​71 

25的整数。我想读的整数为5 * 5的整数数组:

void BingoCard::fill(istream& input) 
    { 
     for(int i=0; i<size; i++){ 
      for(int j=0; j<size; j++){ 
       input >> fields[i][j]; 
      } 
     } 
    } 

打印代码如下:

void BingoCard::display(ostream& out) const 
{ 
    for(int i=0; i<size; i++){ 
     for(int j=0; j<size; j++){ 
      out << setw(5) << fields[i][j]; 
     } 
     out << endl << endl; 
    } 
} 

然而,当我打印嵌套数组,只有第一显示号码15。我究竟做错了什么?

+3

请创建一个[mcve]。您发布的代码没有任何概念错误。 – Rakete1111

+0

你可以添加打印代码吗? –

+1

你是怎么打印的?这似乎是缺少的关键部分。 – Carcigenicate

回答

1

您可以尝试运行此代码,它可以在我的机器上运行。

#include <iostream> 
#include <iomanip> 
#include <fstream> 
using namespace std; 
int main() { 

    int ** fields = new int*[5]; 
    int size = 5; 
    for (int i = 0; i < size; ++i) { 
     fields[i] = new int[5]; 
    } 

    ifstream fs("input.txt", std::ifstream::in); 
    for(int i=0; i<size; i++){ 
     for(int j=0; j<size; j++){ 
      fs >> fields[i][j]; 
     } 
    } 


    for(int i=0; i<size; i++){ // this is display(ostream& out) 
     for(int j=0; j<size; j++){ 
      cout << setw(5) << fields[i][j]; 
     } 
     cout << endl << endl; 
    } 
} 

这里是输入文件的样子,

$cat input.txt 
15 14 13 12 11 30 29 28 27 26 45 44 43 42 41 60 59 58 57 56 75 74 73 72 71 
$file input.txt 
input.txt: ASCII text 
+0

该代码也在我的机器上运行。问题是我正在阅读ifstream,而不是cin。这有什么区别吗? –

+0

查看更新的答案 –

0

原来Artemy维索茨基是对的,我在输入文件中有错误的数据。我再次输入数据,现在它可以工作。谢谢您的帮助!