Takiego pliku nie da się poprawnie odczytać, ponieważ jeżeli nazwa gry będzie zawierała dwa znaki “G:” to już nie będziesz wiedział gdzie zaczyna się kategoria.
Czym się różni zapisa binarny od tego? Poza oczywiscie cyferkami? Co można za jego sposobem osiagnać?
I tak dla estetyki, jak bym chciał najpierw napisać “Nazwa Gry:” a wczytać ją z pliku to da się to jakoś zrobić plik.getline czy musze coutem to napisac zanim wczytam?
[*:26jvumy3]Zapis binarny jest nieco szybszy chociażby z powodu mniejszego rozmiaru*, łatwo jest wykluczyć ingerencje użyszkodnika w treść pliku.[*:26jvumy3]plik.getline - pobiera wiersz z pliku, jeżeli w pliku nie zapisano “Nazwa Gry:” to za pomocą getline tego nie wczytasz.
*Tak jest przeważnie, ale zawsze można wymyślić przykład dla którego zapis binarny będzie dłuższy niż tekstowy.
Oczywiście, bo plik zaczynasz z pustego wiersza, a przy odczycie pusty wiersz czytasz jako nazwę, potem nazwę czytasz jako gatunek, potem próbujesz czytać gatunek jako rok a to już programowi się nie udaje.
Tak a propos, próbowałeś w tym twoim menu głównym wpisać literkę zamiast liczby?
Trochę to uporządkowałem, ale nadał to jest brzydkie rozwiązanie
Zobacz co masz w pliku, przed chwilą skompilowałem i odpaliłem to co podałem wczoraj, nie ma problemu który opisujesz.
ios::clear(); - Czyści flagi ustawione w cin, na przykład flagę ios:bad_bit; ta flaga ustawia się kiedy podczas próby wczytania liczby kiedy na wejściu są litery. Jeżeli flaga ios:bad_bit ustawiona to nie działa żadna instrukcja czytająca czy też wpisująca z/do strumienia.