c ++ print / build 2d数组

时间:2014-02-04 06:29:45

标签: c++ arrays matrix

我正在尝试构建和打印一个二维数组,但当我尝试将其打印出来时它显示为空,所以在某处出现了错误,但我无法找到它。有人可以帮忙吗?我添加了初始化数组的代码。

#ifndef MAZE_HPP_
#define MAZE_HPP_

#include <fstream>
#include <vector>
#include <string>

class Maze
{
public:
    Maze(int size);
    ~Maze() {}

    enum Direction { DOWN, RIGHT, UP, LEFT };

    // Implement the following functions:

    // read maze from file, find starting location
    void readFromFile(std::ifstream &f);

    // make a single step advancing toward the exit
    void step();

    // return true if the maze exit has been reached, false otherwise
    bool atExit();

    // set row and col to current position of 'x'
    void getCurrentPosition(int &row, int &col);

    //print function
    void printMaze();

    // You can add more functions if you like
private:
    // Private data and methods
    int size, rowX, colY;
    char matrix[30][30];
};


#endif /* MAZE_HPP_ */

void Maze::readFromFile(std::ifstream &f) {
    std::string line;
    int i, j;
    getline(f, line);
    for(i = 0; i < size; i++) {
        getline(f, line);
        for(j = 0; j < size; j++) {
            matrix[j][i] = line[j];
        }
    }
    f.close();
}

void Maze::printMaze() {
    int i, j;
    for(i = 0; i < size; i++) {
        for(j = 0; j < size; j++) {
            std::cout << matrix[i][j] << "";
            std::cout << "line";
        }
        std::cout << std::endl;
    }
}

1 个答案:

答案 0 :(得分:1)

初始化并不重要,尽管这是一个好习惯。回到问题:可能有几个原因
1。在创建Maze对象时,您在构造函数中传递了零或负数。
2。您已通过正数大小但忘记将其分配给构造函数中的size变量。


如果它在打印功能中进入循环并显示字符串“line”大小的次数,则表示它无法从文件中读取任何内容。

如果您发送完整代码或至少是构造函数,将会很有帮助。