Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wczytywanie list plików.

Ostatnio zmodyfikowano 2013-02-22 15:55
Autor Wiadomość
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.
C/C++
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:
C/C++
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?
P-76708
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.
P-76710
Monika90
» 2013-02-22 15:35:32
Wskaźniki które masz w levelList są nieważne.
C/C++
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ł.
P-76712
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.
P-76713
« 1 »
  Strona 1 z 1