[C++] Wczytywanie pliku własnego formatu
Ostatnio zmodyfikowano 2024-02-29 00:29
tBane Temat założony przez niniejszego użytkownika |
[C++] Wczytywanie pliku własnego formatu » 2024-02-26 15:15:10 Witam. Stworzyłem prosty format plików *.hexmap. Format ten zawiera dane mapy w postaci ciągów intów posX, posZ, type. Potrzebuję wczytać plik z tym formatem. void HexMap::saveAsFile( std::string name ) { name = name + ".hexmap"; ofstream file; file.open( name.c_str() ); for( auto & t: tiles ) { file << t->x; file << t->z; file << terrainTypeToInt( t->ttype ); } file.close(); }
void HexMap::loadFromFile( std::string name ) { name = name + ".hexmap"; ifstream file; file.open( name.c_str(), ios::in | ios::binary ); int x, z, ttype; while( !file.eof() ) { file >> x; file >> z; file >> ttype; HexTile * tile = new HexTile( smgr->getRootSceneNode(), smgr, - 1, x, z ); tile->setTerrainType( intToTerrainType( ttype ) ); addTile( tile ); cout << tile->x << ", " << tile->z << " - " << terrainTypeToInt( tile->ttype ) << "\n"; } file.close(); }
|
|
pekfos |
» 2024-02-26 18:34:43 A co jest nie tak z podanym kodem? |
|
tBane Temat założony przez niniejszego użytkownika |
» 2024-02-26 18:59:25 Wczytuje tylko jedną liczbę - x. Chciałem ominąć używanie separatorów podczas zapisu. 2147483647, -858993460 - -858993460 load world
|
|
pekfos |
» 2024-02-27 19:17:42 A jak by to miało działać bez separatorów? Jeśli 4518351 to 3 liczby, to jakie? 45-183-51? 451-835-1? Format pliku powinno się dać jednoznacznie zdekodować. Po prostu dodaj spacje między liczby w jednej linii, wczytywanie możesz zostawić jak jest. |
|
tBane Temat założony przez niniejszego użytkownika |
» 2024-02-28 16:50:51 czyli nie da się zapisywać zmiennych binarnie. ok, dzięki. rozwiązanie:void HexMap::saveAsFile( std::string name ) { name = name + ".hexmap"; ofstream file; file.open( name.c_str() ); for( auto & t: tiles ) { file << t->x << " "; file << t->z << " "; file << terrainTypeToInt( t->ttype ); if( t != tiles[ tiles.size() - 1 ] ) file << "\n"; } file.close(); }
void HexMap::loadFromFile( std::string name ) { name = name + ".hexmap"; ifstream file; file.open( name.c_str() ); int x, z, ttype; while( !file.eof() ) { file >> x; file >> z; file >> ttype; HexTile * tile = new HexTile( smgr->getRootSceneNode(), smgr, - 1, x, z ); tile->setTerrainType( intToTerrainType( ttype ) ); addTile( tile ); }; file.close(); addTriangleSelector(); setNeighbours(); }
|
|
pekfos |
» 2024-02-28 19:48:54 czyli nie da się zapisywać zmiennych binarnie. Nie pytałeś o zapis binarny. Pytałeś jak wczytać plik, którego format zdefiniowałeś wyłącznie kodem który ten plik generuje. Zapis binarny |
|
tBane Temat założony przez niniejszego użytkownika |
» 2024-02-28 21:15:44 Mój błąd. dziękuje wszystko działa :-) |
|
« 1 » |