• 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

VPS Starter Arubacloud
0 głosów
373 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 200 wizyt
pytanie zadane 27 stycznia 2021 w C i C++ przez Miaugosia Nowicjusz (210 p.)
0 głosów
1 odpowiedź 1,017 wizyt
pytanie zadane 26 lipca 2017 w C i C++ przez WireNess Stary wyjadacz (11,240 p.)
+1 głos
2 odpowiedzi 368 wizyt
pytanie zadane 14 czerwca 2021 w C# przez everstudybee Użytkownik (670 p.)

93,023 zapytań

141,986 odpowiedzi

321,290 komentarzy

62,370 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...