[C++] Wczytywanie danych z pliku i zapis w strukturze
Ostatnio zmodyfikowano 2018-03-05 01:00
beredentod Temat założony przez niniejszego użytkownika |
[C++] Wczytywanie danych z pliku i zapis w strukturze » 2018-03-04 21:17:47 Mam problem z zapisaniem danych z mojego pliku do struktury. Wczytuje się wyłącznie pierwsza "grupa", przy następnych program się wysypuje. *Proszę nie pisać o tym, że mogę zapisać te dane w postaci tabeli itp.* #include<iostream> #include<fstream> using namespace std; struct pytanie { string pyt; string odp1; int pkt1; string odp2; int pkt2; string odp3; int pkt3; string odp4; int pkt4; string odp5; int pkt5; }; int main() { fstream plik; plik.open( "pytania.txt", ios::in | ios::out ); pytanie lista[ 10 ]; for( int i = 0; i < 7; i++ ) { getline( plik, lista[ i ].pyt ); plik >> lista[ i ].odp1; plik >> lista[ i ].pkt1; plik >> lista[ i ].odp2; plik >> lista[ i ].pkt2; plik >> lista[ i ].odp3; plik >> lista[ i ].pkt3; plik >> lista[ i ].odp4; plik >> lista[ i ].pkt4; plik >> lista[ i ].odp5; plik >> lista[ i ].pkt5; } void close( void ); for( int i = 0; i < 7; i++ ) { cout << lista[ i ].pyt << "\n"; cout << lista[ i ].odp1 << " " << lista[ i ].pkt1 << "\n"; cout << lista[ i ].odp2 << " " << lista[ i ].pkt2 << "\n"; cout << lista[ i ].odp3 << " " << lista[ i ].pkt3 << "\n"; cout << lista[ i ].odp4 << " " << lista[ i ].pkt4 << "\n"; cout << lista[ i ].odp5 << " " << lista[ i ].pkt5 << "\n"; } }
plik: Pytanie 1 odp1 13 odp2 14 odp3 15 odp4 16 odp5 17 Pytanie 2 odp1 13 odp2 14 odp3 15 odp4 16 odp5 17 Pytanie 3 odp1 13 odp2 14 odp3 15 odp4 16 odp5 17 Pytanie 4 odp1 13 odp2 14 odp3 15 odp4 16 odp5 17 Pytanie 5 odp1 13 odp2 14 odp3 15 odp4 16 odp5 17 Pytanie 6 odp1 13 odp2 14 odp3 15 odp4 16 odp5 17 Pytanie 7 odp1 13 odp2 14 odp3 15 odp4 16 odp5 17 |
|
mateczek |
» 2018-03-04 21:56:06 Co masz w pliku?? wklej swój plik
|
|
mateczek |
» 2018-03-04 22:19:28 Po wczytaniu liczby pozbądź się znaków końca linii ze strumienia (jedna z metod jak niżej) char endline; for( int i = 0; i < 7; i++ ) { getline( plik, lista[ i ].pyt ); plik >> lista[ i ].odp1; plik >> lista[ i ].pkt1 >> endline; plik >> lista[ i ].odp2; plik >> lista[ i ].pkt2 >> endline; plik >> lista[ i ].odp3; plik >> lista[ i ].pkt3 >> endline; plik >> lista[ i ].odp4; plik >> lista[ i ].pkt4 >> endline; plik >> lista[ i ].odp5; plik >> lista[ i ].pkt5 >> endline; } |
|
pekfos |
» 2018-03-05 01:00:57 Po wczytaniu liczby pozbądź się znaków końca linii ze strumienia (jedna z metod jak niżej) |
To ma znaczenie przy mieszaniu >> z getline, a twoja implementacja jest do tego też błędna. Twoja metoda nie ma racji bytu, a na pewno nie dla tak zdefiniowanego endline. A to skąd się wzięło? Bezmyślnie skopiowana linijka z dokumentacji? |
|
« 1 » |