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 das static beim ersten ist falsch!), vor die jeweilige Schleife!



  • @Th69 Danke! Ich war gestern wohl zu müde...


Anmelden zum Antworten