我正在尝试构建和打印一个二维数组,但当我尝试将其打印出来时它显示为空,所以在某处出现了错误,但我无法找到它。有人可以帮忙吗?我添加了初始化数组的代码。
#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;
}
}
答案 0 :(得分:1)
初始化并不重要,尽管这是一个好习惯。回到问题:可能有几个原因
1。在创建Maze对象时,您在构造函数中传递了零或负数。
2。您已通过正数大小但忘记将其分配给构造函数中的size变量。
如果它在打印功能中进入循环并显示字符串“line”大小的次数,则表示它无法从文件中读取任何内容。
如果您发送完整代码或至少是构造函数,将会很有帮助。