Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C++ pomijanie pustego wiersz

Ostatnio zmodyfikowano 2018-08-27 20:11
Autor Wiadomość
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++;

    }
P-172220
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.
P-172221
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ć?
P-172222
pekfos
» 2018-08-27 18:30:24
Pętla nie ma znaczenia. Wszystkie pętle są miedzy sobą zamienne.
P-172224
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..
P-172226
pekfos
» 2018-08-27 19:06:28
Prościej będzie, jak zaczniesz wczytania jednego rekordu.
P-172227
Turoczek
Temat założony przez niniejszego użytkownika
» 2018-08-27 19:14:33
Tylko nie wiem jak to zrobić..
P-172228
pekfos
» 2018-08-27 20:11:56
C/C++
getline( plik, pesel );
//..
P-172230
« 1 »
  Strona 1 z 1