Wczytanie stanu konta gracza z pliku za pomocą fstream

0

Witam.

Potrzebuję napisać funkcję, która wczytywałaby stan konta gracza z pliku. W pliku znajdują się nazwy wielu graczy wraz ze stanami kont. Przykładowa treść pliku:

Bartek 900
Roman 1450
Zdzislaw 1100

jeżeli byłoby to jakieś uproszczenie to może być też tak:

Bartek
900
Roman
1450
Zdzislaw
1100

Tak więc ogólnie rzecz biorąc: użytkownik podaje swoją nazwę gracza, po czym zostaje ona odnaleziona w pliku i funkcja zwraca sąsiadującą z nazwą kwotę.

W jaki sposób to najprościej zrobić?

0

Hmm, na przykład wczytać dane z pliku a następnie odszukać usera i pobrać dane z nim powiązane? Czego nie umiesz zrobić?

0

Nie wiem w jaki sposób wczytać dane żeby nie było z tym za dużo roboty. Całość zapisać do jednego stringa i szukać w nim nazwy gracza? Nawet jak ją znajdę to jak potem wczytać saldo nie znając długości nazwy ani ilości cyfr w saldzie no i nie wiem jak wtedy zwrócić liczbę jako int.

Ogólnie przydałaby mi się jakaś sugestia jakich funkcji użyć i jak to mniej więcej zrobić.

0
  ifstream plik ;
  plik.open("gracze.txt");

  if(!plik)
  {
     cout << "error" << endl ;
     return 0 ;
  }

  string dane ;
  string nazwa_gracza = "Roman" ;
  int stan_konta = -1 ;

   while( plik >> dane)
   {
        if(dane == nazwa_gracza)
        {
           plik >> stan_konta ;

           cout << "Stan konta :" << nazwa_gracza << " = " << stan_konta << endl ;
           break ;
        }


   }

      if(-1 == stan_konta)
      {
         cout << "Nie odnaleziono gracza." << endl ;
      }
         //.....
           plik.clear();
           plik.close();
0

Wszystko śmiga, wielkie dzięki.

Z tym, że teraz nasuwa mi się kolejne pytanie. Czy istnieje jakiś prosty sposób, żeby po zakończonej rozgrywce nadpisać saldo w pliku obok danego gracza daną wartością?

0

Chyba dobrze będzie przy wczytywaniu zapamiętać linijkę i w tej linijce zastąpić nową wartością.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.