Pobieranie danych z pliku .txt

0

Witam, napisałem funkcję, która ma pobierać z kolejnych linijek dane. W każdej linijce dane mają być pobierane, dopóki program nie natrafi na ";". Nie wiem z jakiego powodu program z ostatniej linijki wypisuje dane "podwójnie" np:

W pliku txt wygląda to tak:
123;456;789
qwe;rty;uio
asd;fgh;jkl
zxc;vbn

Chciałbym, żeby pobrało:
123
qwe
asd
zxc

Funkcja pobiera:
123
qwe
asd
zxc
zxc

Kod:

int wyswietl()
{
string dane;
   
ifstream plik("baza.txt");
   while(! plik.eof())
   {                                       
          getline(plik,dane);

          for(int z=0;z<1000;z++)
          {
               if(dane[z]!=';')
               {
               cout<<dane[z];
               }
               else break;
          }
          cout<<endl;
   }
   plik.close();   
0

u siebie wklepałem, ale u mnie działa prawidłowo... Poza tym void zamiast int powinno być. Może coś w pliku tekstowym masz źle?

0

to jest standardowy błąd w używaniu STLa.
Pamiętaj, że plik.eof() zwraca true jeśli nastąpiła próba czytania poza plikiem, a nie gdy osiągnięto koniec pliku.
Popraw tak:

while(getline(plik,dane))
{
   for(int z=0;z<1000;z++)
0

Marek wielkie dzięki, działa. Na przyszłość będę o tym pamiętał ;)

0

Można to zrobić jeszcze prościej:

while(getline(plik, dane, ';'))
{
    cout << dane << endl;
    getline(plik, dane);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1