读取包含空格的字符并从文件c ++中排除换行符

时间:2012-11-22 18:53:54

标签: c++ file map char

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

文件外观的一个示例。

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

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

地图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)

我该怎么办? `

1 个答案:

答案 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);
}