正如标题所示,我想从文件中读取每个字符,包括空格和排除新行。
文件外观的一个示例。
.
## . :
#___-
##
--------------
______________
然后我使用地图将每个字符转换为整数。
地图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);
}
当我编译它时,我只得到一个`Segmentation fault(core dumped)
我该怎么办? `
答案 0 :(得分: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);
}