pytalski Temat założony przez niniejszego użytkownika |
Wprowadzanie danych z pliku » 2015-05-28 00:48:57 Witam Próbuje wprowadzić dane z pliku do składowych obiektów. Plik się otwiera, bo nie pisze komunikatu, teoretycznie tworzy obiekt, bo konstruktor nie zwraca komunikatu o błędzie, ale gdy próbuje pokazać składowe obiektu na ekranie to wraca do menu głównego. Nie wiem gdzie mam błąd. Bardzo proszę o pomoc. cout << "Podaj nazwe pliku z ktorego chcesz miec dane dla kwiatow :"; cin >> nazwa_pliku; fstream plik; plik.open( nazwa_pliku, ios::in ); if( plik.good() == false ) cout << "Error!!!!!!!";
for(;; ) { if( !( plik >> nazwa_pliku ) ) break; plik >> temp >> s1 >> s2; i1 = atoi( temp.c_str() ); tab.emplace_back( i1, s1, s2 ); plik.close(); } for( int i = 0; i < tab.size(); i++ ) { tab[ i ].daj_id(); tab[ i ].daj_nazwe(); tab[ i ].daj_typ(); } break; |
|
JMII89 |
» 2015-05-28 07:18:00 plik.open(nazwa_pliku.c_str(),std::ios::in); |
|
stevy |
» 2015-05-28 08:16:56 open obsługuje stringa, nie trzeba zamieniać na const char*, a jakby nie dodał przestrzeni nazw to by mu się nawet nie kompilowało. Zastanawia mnie dlaczego czytasz to w pętli do TYCH SAMYCH zmiennych i gdzie wypełniasz tablice, bo trochę w kodzie brakuje |
|
SeaMonster131 |
» 2015-05-28 11:59:35 ... tab.emplace_back( i1, s1, s2 ); plik.close(); }
Zamykasz plik po pierwszym przejściu pętli. Dodatkowo - nie wiem czy to zamierzone, czy nie - w każdym obiegu pętli najpierw z pliku wczytujesz stringa nazwa_pliku, a dopiero potem temp, s1, s2. |
|
pytalski Temat założony przez niniejszego użytkownika |
» 2015-05-28 13:04:30 SeaMonster131 Moim celem jest wczytywanie danych z pliku. Dopóki dane są, dopóty dane są wprowadzane/obiekty tworzone. Gdy danych nie będzie to koniec. Dlatego wprowadziłem tego if-a, bo podobno jest to znacznik końca pliku, więc wtedy pętla zostaje przerwana. No i niestety program źle wczytuje dane - zamiast 1234 aaa bbb 5678 ccc ddd (wyrazy oddzielone enterem) jest 0 bbb 5678 (jako dwa obiekty). |
|
SeaMonster131 |
» 2015-05-28 13:30:42 Dlatego wprowadziłem tego if-a, bo podobno jest to znacznik końca pliku, więc wtedy pętla zostaje przerwana. |
Co nie znaczy, że warunek w if się nie wykona (i pozycja kursora w pliku przeskoczy na następny element), dlatego teraz źle wczytuje Ci dane. |
|
pytalski Temat założony przez niniejszego użytkownika |
» 2015-05-28 14:43:02 OK, poradziłem sobie jakoś i działa. Mam natomiast inny problem. Czy jest jakoś możliwość przeniesienia wczytywania tych danych do funkcji? Bo tak myślę, że chyba jedyna opcja to zrobienie pustego konstruktora i przesyłanie danych przez tą funkcję bezpośrednio do składowych klasy. |
|
pekfos |
» 2015-05-28 15:13:40 Czy jest jakoś możliwość przeniesienia wczytywania tych danych do funkcji? |
Tak |
|
« 1 » |