Bartex321 Temat założony przez niniejszego użytkownika |
poruszanie się po pliku w trybie odczytu » 2019-10-05 17:37:39 Tworzę quiz obiektowo w c++ i wszystko jest dobrze dopóki pytania wczytuje w ten sposób: for( int i = 0; i < ilepyt; i++ ) { getline( file, obiekt[ i ].pyt ); getline( file, obiekt[ i ].a ); getline( file, obiekt[ i ].b ); getline( file, obiekt[ i ].c ); getline( file, obiekt[ i ].d ); getline( file, obiekt[ i ].pop ); }
jednak jeśli już używam klas to chciałbym to zrobić w ten sposób: void uzupelnij() { fstream file; file.open( "quiz.txt", ios::in ); file.seekg( pozycja, ios::beg ); getline( file, pyt ); getline( file, a ); getline( file, b ); getline( file, c ); getline( file, d ); getline( file, pop ); pozycja = file.tellg(); file.close(); }
niestety wynik pierwszego kodu wyglada tak: Typ zmiennych o nazwie float przechowuje: A: liczby calkowite B: napisy C: liczby zmiennoprzecinkowe D: pojedyncze znaki //program czeka na wprowadzenie odpowiedzi
Wstrzymanie wykonania programu na czas 2 sekund uzyskasz instrukcja: A: Wait(2000) B: Stop(2000) C: Delay(2000) D: Sleep(2000)
natomiast wynik drugiego kodu to: Typ zmiennych o nazwie float przechowuje: A: liczby calkowite B: napisy C: liczby zmiennoprzecinkowe D: pojedyncze znaki //program czeka na wprowadzenie odpowiedzi
programu na czas 2 sekund uzyskasz instrukcja: A: Wait(2000) B: Stop(2000) C: Delay(2000) D: Sleep(2000)
kod który wypisuje jest identyczny w obu przypadkach, a zmienna pozycja jest wywoływana tylko dwa razy co jest pokazane powyżej |
|
pekfos |
» 2019-10-05 17:44:17 fstream file; file.open( "quiz.txt", ios::in );
file.seekg( pozycja, ios::beg );
getline( file, pyt ); getline( file, a ); getline( file, b ); getline( file, c ); getline( file, d ); getline( file, pop );
pozycja = file.tellg(); |
To zupełnie złe podejście. Powinieneś plik otworzyć raz, jak w wersji nr 1 i przekazywać go do metody uzupelnij(). Więc void uzupelnij( std::ifstream & file ) { getline( file, pyt ); getline( file, a ); getline( file, b ); getline( file, c ); getline( file, d ); getline( file, pop ); } |
|
Bartex321 Temat założony przez niniejszego użytkownika |
» 2019-10-05 18:46:26 prawdę mówiąc próbowałem, lecz nie chciało działać, może dlatego, że przekazywałem kopię, a nie oryginał? W każdym bądź razie teraz działa, lecz z ciekawości, czemu tamten kod nie działał? Wznawiałem wczytywanie od momentu w którym skończyłem poprzednie, wszystko powinno być w porządku |
|
pekfos |
» 2019-10-05 21:39:07 |
|
« 1 » |