Analiza kodu

0

Witam. Analizuję działanie pewnego programu, ale nie do końca rozumiem fragment w którym zostaje przeciążony operator. Czy może mi ktoś dokładnie wytłumaczyć za co odpowiada ten kod ?

 
friend istream & operator >>(istream & stream, Druzyna & druzyna) {
		string line;
		while (getline(stream, line))
		{
			std::stringstream   linestream(line);

			Gracz gracz;
			linestream >> gracz;

			druzyna.team.push_back(gracz);
		}
		return stream;
	}

Nie jest tak, że nic nie rozumiem. Poniżej zamieszczam linijki, które wymagają wytłumaczenia:

 std::stringstream   linestream(line);
  • dlaczego po linestream jest jeszcze nawias ? Jakieś rzutowanie ?
linestream >> gracz; 
  • dlaczego użyto line stream, skoro w while (getline(stream, line))
</ul>
dane są wczytywane do line ?
1

Polecam jakiś kurs dla początkujących.

std::stringstream   linestream(line);

Inicjalizacja obiektu linestream typu std::stringstream wartością line.

linestream użyto bo line to std::string, który streamem nie jest.

2

Ten kod jest dziwnawy. Dzieli dane ze strumienia wejściowego na linie

while (getline(stream, line))

a potem wczytuje dane z każdej linii do obiektu typu Gracz

linestream >> gracz;

Można zapytać po co pierwszy krok skoro można od razu wczytać do Gracz

Gracz gracz;
while (stream >> gracz)
{
    druzyna.team.push_back(gracz);
}

return stream;

Więc albo w każdej linii oprócz danych gracza są też jakieś inne dane, które chcemy ignorować, albo ktoś za bardzo się wydziwiał.

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