• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

odczyt z pliku i przeciążenie operatora

Object Storage Arubacloud
0 głosów
354 wizyt
pytanie zadane 5 września 2016 w C i C++ przez hunter44 Nowicjusz (210 p.)


Witam. Uczę się obiektówki. Zadaniem programu jest sworzenie listy z danymi piłkarzy.
Pojawił się problem już na sam koniec a mianowicie:
Chcę otworzyć plik i odczytać z niego dane piłkarzy a następnie dodać je na listę.
Plik txt wygląda tak:

Jan Kowalski, lat: 22, napastnik

I nie wiem w jaki sposób przeciążyć teraz operator aby poprawnie odczytał on z pliku dane. Oczywiście ten program na pewno dało by się zrobić bez użycia operatora przeciążenia, ale ja chcę akurat w taki sposób :/

Cały program:
 

#include<iostream>
#include <string>
#include <process.h>
#include <list>
#include <cstddef>
#include <fstream>
#include<cstdlib>

using namespace std;

struct Gracz { // struktura przechowuje dane piłkarza
	string imie;
	string nazwisko;
	int wiek;
	string pozycja;

	

	friend istream & operator >>(istream & is, Gracz & Gracz) { //przeciążenie wypełni mi pola struktury

		cout << "\nImie: "; is >> Gracz.imie;
		cout << "Nazwisko: "; is >> Gracz.nazwisko;
		cout << "Wiek: "; is >> Gracz.wiek;
		cout << "Pozycja:"; is >> Gracz.pozycja;
		return is;
	}
};


class Druzyna { //lista jest znana i zaprzyjaźniona dzięki strukturze ze wszysktimi metodami i wypełni mi całą klasę
	list < Gracz > team;
public:


	void dodaj_gracza() {
		Gracz gracz; // lokalna deklaracja obiektu 
		cin >> gracz; // użycie przeciążonego operator>> ze struktury (wypełnia pola struktury)
		team.push_back(gracz);
		
	}

	friend ostream & operator <<(ostream & os, const Druzyna & Druzyna) {
		for (auto const & elem : Druzyna.team) {
			os << elem.imie << ' ' << elem.nazwisko << ", " << "lat: "
				<< elem.wiek << ", " << elem.pozycja << endl;

		}
		return os;
	}

	

};


int main()
{
	Druzyna druzyna{}; // deklaracja obiektu klasy (z kontenerem)
	



	int flaga = 0;

	char switchOpcja{};
	do {
		cout << "1. Dodaj pilkarza" << endl;
		cout << "2. Pokaz liste" << endl;
		cout << "3. Zapisz do pliku" << endl;
		cout << "4. Wczytaj z pliku" << endl;
		cout << "5. Zakoncz" << endl;
		cin >> switchOpcja;
		switch (switchOpcja) {
		case '1'://1.dodaj pilkarza
		{
			druzyna.dodaj_gracza();
			flaga = 1;

			break;
		}
		case '2'://2.pokaz liste
		{
			if (flaga == 0) cout << "Lista jest pusta kolego. Najpierw kogos dodaj" << endl;
			cout << druzyna << '\n';
			break;
		}
		case '3'://3.zapisz do pliku
		{
			if (flaga == 0) cout << "Chlopie ! Co TY chcesz zapisac skoro nie stworzyles listy ?" << endl;
			fstream plik;
			plik.open("lista.txt", ios::out | ios::app);
			plik << druzyna;
			plik.close();

			cout << "\nWykonano zapis do pliku\n"<<endl;

			break;
		}

		case '4'://otworz z pliku
		{
			ifstream plik;
			plik.open("lista.txt");
			if (plik.good() == false) { cout << "Plik nie istnieje\n" << endl; break; }


			string slowo;
			while (true)
			{
				flaga = 1;
				if (plik.good())
				{
					

				}
				else
					break;


			} //while
			plik.close();
		}

		break;
		case '5'://zakoncz
		{cout << "Koniec.\n";

		break;
		}
		default:
		{
			cerr << "Jakis nieokreslony przypadek.\n";
		}
		}
	} while (switchOpcja != '5');



	system("PAUSE");


	return 0;

}

 

1 odpowiedź

0 głosów
odpowiedź 5 września 2016 przez Thomas Frost Bywalec (2,540 p.)
Cześć,

Szybka piłka!

​typ_zwracany operator(argumenty)
{
​    // Jak ma się operacja wykonać.
}

https://pl.wikibooks.org/wiki/C%2B%2B/Przeci%C4%85%C5%BCanie_operator%C3%B3w

Pozdrawiam,
Tomek

Podobne pytania

0 głosów
0 odpowiedzi 168 wizyt
pytanie zadane 27 stycznia 2021 w C i C++ przez Miaugosia Nowicjusz (210 p.)
0 głosów
1 odpowiedź 909 wizyt
pytanie zadane 26 lipca 2017 w C i C++ przez WireNess Stary wyjadacz (11,240 p.)
+1 głos
2 odpowiedzi 334 wizyt
pytanie zadane 14 czerwca 2021 w C# przez everstudybee Użytkownik (610 p.)

92,570 zapytań

141,422 odpowiedzi

319,644 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...