Wczytywanie list plików.
Ostatnio zmodyfikowano 2013-02-22 15:55
polkom21 Temat założony przez niniejszego użytkownika |
Wczytywanie list plików. » 2013-02-22 14:33:59 No to tak. Mam taką funkcję, która wczytuje mi z pliku adresy plików z konkretnymi mapami. void GamePlay::levels() { std::fstream lvlist; std::string temp; lvlist.open( "Data/levels.list", std::ios::in ); for( int i = 0; i <= 1; i++ ) { lvlist >> temp; levelList[ i ] = temp.c_str(); std::cout << levelList[ i ] << std::endl; } lvlist.close(); }
tablica levelList[] jest typu unsigned char *. Ładowanie map jest wykonywane w funkcji: levelLoader( levelList[ 0 ] ); ... void GamePlay::levelLoader( const char * nameMap ) { std::fstream mapfile; mapfile.open( nameMap, std::ios::in ); for( int y = 0; y < 25; y++ ) { for( int x = 0; x < 14; x++ ) { mapfile >> map[ x ][ y ]; } } }
Plik z mapami ma taką zawartość: Data/Levels/test.level Data/Levels/test2.level i zawartość tego jest wczytywana dobrze i tu jest wszystko ok. Jeżeli podam jedną ścieżkę ręcznie to wczyta się ok a z tablicy nie działa. Czemu tak jest? |
|
krzyk |
» 2013-02-22 15:30:09 zawartość tego jest wczytywana dobrze |
Chyba jednak nie.
levelList[ i ] = temp.c_str(); przypisujesz tylko wskażnik do zawartości string-a. |
|
Monika90 |
» 2013-02-22 15:35:32 Wskaźniki które masz w levelList są nieważne. levelList[ i ] = temp.c_str();
temp.c_str() zwraca wskaźnik do (pierwszego elementu) tablicy znaków, która może przestać istnieć gdy zmodyfikujesz zmienną temp, a już na pewno przestanie istnieć po powrocie z funkcji levels(), bo zmienna temp przestanie istnieć. Poza tym, nie jest możliwe żeby tablica levelList była typu unsigned char*, bo kod by się nie skompilował. |
|
polkom21 Temat założony przez niniejszego użytkownika |
» 2013-02-22 15:55:29 Jeny co ja piszę. Nie unsigned char* tylko const char*. To podpowiecie jak to zrobić? Zapis do zmiennej string działa ale potrzebuję zrobić konwersje string na const char*
Dobra poradziłem sobie :P Dzięki za chęci. |
|
« 1 » |