C ++从嵌套循环中的文件读取并将值分配给二维数组

时间:2016-11-25 14:13:14

标签: c++

我有一个零和一个文件。数字表示我想从文件中读取并放置在数组中的ASCII映射。更容易在文本文件上创建地图,手动将它们分配给所有数组位置

以下是我的代码。我不明白为什么会有错误。我将添加错误图像,以便可以看到部分

下的红线

结果应该是从文件中读取数字并将它们插入数组

非常感谢任何有关此微小错误的帮助

#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main()
{
    int levelOneArray[29][29];
    ofstream levelOne;
    int digit;

    levelOne.open("levelOne.txt");
    for (int x = 0; x < 30; ++x)
    {
        for (int y = 0; y < 30; ++y)
        {
            levelOne >> digit;
            int value = digit;
            levelOneArray[y][x] = digit;
        }
    }
}

//This is what is contained in the levelOne.txt file
111111111111111111111111111111
100000000000000000111000000111
101111101110001110111001110111
101111101110001110000001110001
101111101110001111111101111111
101111100000001111111100011111
101111101110001111111100011111
100000000000001111111100011111
101111110000000000111100000001
101000010111111110111100000001
101111010000000010111111111101
101111011111111010111111111101
101111000000001010111101000001
101111111111101010111101000001
100000111111101010111101011111
101110111111101010111100011111
100000111111101011111110011111
100111111111101001111110011111
100110000000000001111110000001
100000111100001000000000111001
100000100101101111111110111011
100110110101101000011000111001
100110110101101011011011111001
100000000001101011000011111001
100000000011101011111111111001
111110110011101011111111111101
100110110011101011111111111001
101100000010000000100000100001
100000000000001000000100000011
111111111111111111111111111111

这是我的图片

图片一Error Image One 图像二Error Image two

2 个答案:

答案 0 :(得分:1)

你的数组levelOneArray有29行和29列(即索引0..28),但在你的for循环中你循环到30,这太多了。

int levelOneArray[29][29];
//...

for (int x = 0; x < 29; ++x)
{
    for (int y = 0; y < 29; ++y)
    {
    // ..
    }
}

答案 1 :(得分:0)

OP解决方案。

int main()
{
    char levelOneArray[30][30];
    ifstream levelOne;
    char digit;

    levelOne.open("levelOne.txt");
    for (int x = 0; x < 30; ++x)
    {
        for (int y = 0; y < 30; ++y)
        {
            levelOne >> digit;
            char value = digit;
            levelOneArray[y][x] = digit;
        }
    }

    for (int x = 0; x < 30; ++x)
    {
        for (int y = 0; y < 30; ++y)
        {
            cout << levelOneArray[y][x];
        }
        cout << endl;
    }
    cout << endl;

    int end;
    cin >> end;
    return 0;
}