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

C++ Zapis / Odczytem vektor<unsigned> do pliku binarnego

Ostatnio zmodyfikowano 2014-08-03 23:37
Autor Wiadomość
Haker123
Temat założony przez niniejszego użytkownika
» 2014-07-31 22:56:21
Tak to string

C/C++
//CHECK FILE
std::string Check_File = "!!!HakerPL!!!";


//KODY DO DANYCH
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?
P-114811
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.
P-114812
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?
P-114821
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().
P-114825
Haker123
Temat założony przez niniejszego użytkownika
» 2014-08-01 16:38:16
Pozmienialem troszke i teraz zapisuje hasla tak
C/C++
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)
C/C++
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
C/C++
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 ;/
P-114871
pekfos
» 2014-08-01 16:55:40
Pozmienialem troszke i teraz zapisuje hasla tak
C/C++
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)
C/C++
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..?
P-114873
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)
P-114936
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ć..
P-114938
1 « 2 » 3 4 5
Poprzednia strona Strona 2 z 5 Następna strona