将一行整数读入二维数组

时间:2017-09-16 18:44:53

标签: c++ c++11 ifstream

我有一个包含以下行的输入文件:

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。我究竟做错了什么?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

事实证明Artemy Vysotsky是对的,我输入文件中的数据不好。我再次输入数据,现在它可以正常工作。谢谢你的帮助!