c ++从文件中读取以构建基于指针的迷宫

时间:2014-11-29 08:05:59

标签: c++ file pointers text graph

我正在尝试阅读“基于指针的”迷宫。每行中的第一个字母对应于房间字母...然后,后面的字母分别是北节点,东节点,南节点和西节点。星号表示空房间或不是有效选项。

所以这将是一个示例输入:

A E B * *
B * * * A
C G D * *
D * * * C
E I F A *
F J G * E
G K H C F
H L * * G
I * J E *
J * K F I
K * * G J
L * * H *

备注说:

  

我们不能假设房间按字母顺序排列A - Z,我们预计最多有12个房间,每个字母或星号之间有一个空格。

这是我到目前为止所做的:

void Maze::read_maze(string FileName) {
    string line;
    ifstream inStream;
    inStream.open(FileName.c_str());
    int test = inStream.peek();
    int i = 0;
    if (!(inStream.fail())) {
        while (!inStream.eof() && test != EOF) {
            getline(inStream, line);
            Node n(line[0]);
            i++;
            rooms[i] = n;
            if (!(line[2] == '*')) {
                Node North = find_Node(line[2]);
                (find_Node(line[0])).set_North(&North);
            }
            if (!(line[4] == '*')) {
                Node East = find_Node(line[4]);
                (find_Node(line[0])).set_East(&East);
            }
            if (!(line[6] == '*')) {
                Node South = find_Node(line[6]);
                (find_Node(line[0])).set_South(&South);
            }
            if (!(line[8] == '*')) {
                Node West = find_Node(line[8]);
                (find_Node(line[0])).set_West(&West);
            }
        }
        currentRoom = find_Node('A');
    } else {
        cout << "Could not open the file, please choose another.\n" << endl;
        exit(1);
    }
}

当我开始解析文件时,我的程序调用我所拥有的函数来检查文件是否为空。所以我认为我正在错误地阅读该文件。

1 个答案:

答案 0 :(得分:1)

在程序运行时,您是否可以使用调试器来检查值?如果没有,那么试试

cost << line <<  endl; 

在getline之后,验证每行读入的实际数据。