Haker123 Temat założony przez niniejszego użytkownika |
» 2014-07-31 22:56:21 Tak to string std::string Check_File = "!!!HakerPL!!!";
std::string Code_Nick = "#@$Nick$@#"; std::string Code_Point = "#@$Point$@#";
i tak wygladaja (nazwy wymyslane na szybkiego ;]) Skoro to jest zly zapis to dlaczego wypis nazw graczy dziala? |
|
pekfos |
» 2014-07-31 23:03:55 Skoro to jest zly zapis to dlaczego wypis nazw graczy dziala? |
Bo pewnie nic nie robiłeś z danymi między zapisem a odczytem z pliku. |
|
Haker123 Temat założony przez niniejszego użytkownika |
» 2014-08-01 00:51:14 Fakt nic nie robie, bo albo odczytuje wszystko (przez lenistwo) albo zapisuje caly plik (robiac nowy) i nie edytuje czesci danych w pliku.
Jak powinien wygladac ten zapis, oraz jak mam poprawnie zapisac i odczytac vektor z punktami gracza? |
|
pekfos |
» 2014-08-01 09:02:34 Dane proste o stałym rozmiarze możesz zapisywać tak, jak robisz. W przypadku tekstu w std::string masz zapisać sam tekst. c_str(), size(). |
|
Haker123 Temat założony przez niniejszego użytkownika |
» 2014-08-01 16:38:16 Pozmienialem troszke i teraz zapisuje hasla tak File.write( Code_Nick.c_str(), Code_Nick.size() );
Nicki graczy z Top10 zapisuje i odczytuje tak . Chce zeby byly one zawsze takiej samej dlugosci dlatego zapisuje je o dlugosci Max = 15, czy to moze byc blad i dlatego mam dziwne liczby przy punktach? (punkty znajduja sie w pliku za nazwami graczy) File.write( Top10_Nick[ i ].c_str(), sizeof( Max ) ); File.read( reinterpret_cast < char *>( & Top10_Nick[ i ] ), sizeof( Max ) );
Wyniki graczy z Top10 zapisuje i odczytuje tak File.write( reinterpret_cast < char *>( & Top10_Points[ i ] ), sizeof( unsigned ) ); File.read( reinterpret_cast < char *>( & Top10_Points[ i ] ), sizeof( unsigned ) );
Niestety dalej zle wypisuje mi punkty. Zamiast poczatkowej wartosci (czyli zero) wypisuje mi dziwne liczby takie jak na zdjeciu ktore zamiescilem kilka postow wczesniej. Juz nie mam pomysli jak to ma wygladac i brakuje mi tylko tego zeby skonczyc gre ;/ |
|
pekfos |
» 2014-08-01 16:55:40 Pozmienialem troszke i teraz zapisuje hasla tak
File.write( Code_Nick.c_str(), Code_Nick.size() );
|
Nie zapisujesz zera na końcu łańcucha. Nicki graczy z Top10 zapisuje i odczytuje tak . Chce zeby byly one zawsze takiej samej dlugosci dlatego zapisuje je o dlugosci Max = 15, czy to moze byc blad i dlatego mam dziwne liczby przy punktach? (punkty znajduja sie w pliku za nazwami graczy)
File.write( Top10_Nick[ i ].c_str(), sizeof( Max ) ); File.read( reinterpret_cast < char *>( & Top10_Nick[ i ] ), sizeof( Max ) );
|
Zapisujesz stringa o nieznanej długości, jeśli ma mniej miejsca niż 15 znaków, to program się złoży.. I nie zapisujesz 15 znaków. Po co znowu usiłujesz wcisnąć tu sizeof, którego działania najwyraźniej nie rozumiesz..? |
|
Haker123 Temat założony przez niniejszego użytkownika |
» 2014-08-02 14:58:00 Z tego co pamietam to taki zapis Code_Nick.c_str() zamienia string na char i dodaje zero na koncu. O sizeof() wiem tylko tyle ze zwraca wielkosc typu w bitach. Stosuje taki zapis bo caly czas go spotykam w internecie jak szukam odpowiedzi na to pytanie. Juz nie wiem jak to ma wygladac ;/ zawsze mialem problemy z plikami binarnymi , masz moze jakas strone gdzie znajde jakies informacje jak to trzeba robic albo moglbys napisac mi jak to ma wygladac??
PS . Zaczynam myslec ze string nie nadaje sie do zapisu do pliku binarnego i lepiej bedzie chyba uzywac char (chociaz nie przepadam za nim) |
|
pekfos |
» 2014-08-02 15:09:14 Z tego co pamietam to taki zapis Code_Nick.c_str() zamienia string na char i dodaje zero na koncu. |
Co nie znaczy, że te zero zapisujesz. O sizeof() wiem tylko tyle ze zwraca wielkosc typu w bitach. |
A po co ci tu wielkość typu zmiennej Max..? To nie tą zmienną zapisujesz, tylko jej wartość określa ile danych masz zapisać.. |
|
1 « 2 » 3 4 5 |