1

正如标题所示,我想从文件中读取每个字符,包括空格和不包括新行。

文件外观的示例。

     .       
##         . :
   #___-     
##
--------------
______________

然后我使用地图将每个字符转换为整数。

地图std::map<char, int> map_converter;

std::ifstream map("level_1.map");

for( int t = 0; t < TOTAL_TILES; t++ ) {
    int tileType = -1;
    char load_type = ' ';

    map >> load_type;
    tileType = map_converter.find(load_type)->second;
    tiles[t] = new Tile(x, y, tileType);
}

当我编译它时,我只得到一个`分段错误(核心转储)

我该怎么办?`

4

1 回答 1

2

如果std::map::find找不到它将返回的值std::map::end。这个问题是分配tileType = std::map::end()->second无效。

std::ifstream map("level_1.map");

for( int t = 0; t < TOTAL_TILES; t++ ) {
    int tileType = -1;
    char load_type = ' ';

    map >> std::noskipws >> load_type;

    if (map_converter.find(load_type) == map_converter.end()) {
        continue;
    }
    tileType = map_converter.find(load_type)->second; //this is now safe to do.
    tiles[t] = new Tile(x, y, tileType);
}
于 2012-11-22T19:23:51.003 回答