String in 2 Schleifen auseinanderpflücken
-
Hallo,
ich würde gerne einen String in zwei Schleifen parsen, um damit Tiles in ein Spiel zu laden.
Der String "mapdata" kommt aus einer SQLite-DB und sieht z.B. so aus:12,12,12,12,12,12,12,17,8,8,18,12,12,12,12,12; 12,12,12,12,12,12,12,6,1,3,15,18,12,12,12,12; 12,12,12,12,12,12,17,16,1,3,3,11,12,12,12,12; 12,12,12,12,12,12,6,1,1,3,3,15,18,12,12,12;Aber irgendwie bekomme ich das mit einem Konstrukt aus zwei stringstreams nicht so hin...
for (int y = 0; y < ysize; ++y) { static std::stringstream ss1(mapdata); std::string mapdata_line; char delimiter = ';'; std::getline(ss1, mapdata_line, delimiter); SDL_Log("Mapdata Line: %s", mapdata_line.c_str()); for (int x = 0; x < xsize; ++x) { std::stringstream ss2(mapdata_line); std::string mapdata_col; char delimiter = ','; std::getline(ss2, mapdata_col, delimiter); SDL_Log("Mapdata Col: %s", mapdata_col.c_str()); Tile* newTile = new Tile(std::stoi(mapdata_col)); tileMap[x][y] = newTile; } }Wo ist mein Denkfehler? Funktioniert evtl. das getline nicht, weil es keine Zeilen im String aus der DB gibt?
-
Du erzeugst innerhalb deiner inneren Schleife immer wieder den
std::stringstream ss2(mapdata_line)neu und liest daher immer nur den ersten Wert mehrfach.Packe beide
std::stringstream(auch dasstaticbeim ersten ist falsch!), vor die jeweilige Schleife!
-
@Th69 Danke! Ich war gestern wohl zu müde...