Turoczek Temat założony przez niniejszego użytkownika |
C++ pomijanie pustego wiersz » 2018-08-27 18:01:29 Witam, mam format pliku tekstowego:
pesel imie nazwisko pusty wiersz waga pusty wiersz pesel drugiej osoby imie nazwisko.. pusty wiersz waga.. pusty wiersz
jak mam takie coś odczytać? jak pominąć te puste wiersze i w jaki sposób policzyć liczbe osób?
while(getline(plik, linia)) { pesel = linia.substr(0,'\n'); nazwa = linia.substr(0,'\n'); linia.ignore(1000,'\n'); <<< podejrzewam, ze tak nie pójdzie; źle waga = linia.substr(0,'\n'); linia.ignore(1000,'\n'); <<< źle
osoby[licznik] = osoba(pesel,nazwa,waga); licznik++;
} |
|
pekfos |
» 2018-08-27 18:17:31 Ten kod jest kompletnie bez sensu. std::getline() daje ci linię z pliku, a nie magicznie wczytuje cały twój wymyślony rekord. Więc masz najpierw tylko pesel, potem tylko imię nazwisko, potem pusty napis, jeśli ta linia naprawdę jest pusta, i tak dalej. |
|
Turoczek Temat założony przez niniejszego użytkownika |
» 2018-08-27 18:23:17 No właśnie teraz tak przeanalizowałem, że to nie ma sensu.. mógłbyś podsunąć jakiś pomysł na rozwiązanie tego?
#edit Na pętli for to zrobić? |
|
pekfos |
» 2018-08-27 18:30:24 Pętla nie ma znaczenia. Wszystkie pętle są miedzy sobą zamienne. |
|
Turoczek Temat założony przez niniejszego użytkownika |
» 2018-08-27 18:51:02 Zakładamy poprawność odczytywanego pliku, przy jednej osobie są 4 linie, przy dwóch 9, przy trzech 13...
Zliczam wszystkie linie getlinem więc zawsze jest (liczba_lini % 4) osób.
for (int i = 0 ; i < liczba_lini ; i++) { for (int j = 0 ; j < 4 ; j++) // nie <5, bo 5 linia jest pusta i nic nie znaczy { } zwiększyć i o 5;
}
Wpadłem na taki schemat, ale jak odczytać te linie..
|
|
pekfos |
» 2018-08-27 19:06:28 Prościej będzie, jak zaczniesz wczytania jednego rekordu. |
|
Turoczek Temat założony przez niniejszego użytkownika |
» 2018-08-27 19:14:33 Tylko nie wiem jak to zrobić.. |
|
pekfos |
» 2018-08-27 20:11:56 |
|
« 1 » |