Analiza kodu

H4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 33
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 ?

Kopiuj
 
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:

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

Polecam jakiś kurs dla początkujących.

Kopiuj
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.

twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
2

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

Kopiuj
while (getline(stream, line))

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

Kopiuj
linestream >> gracz;

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

Kopiuj
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ł.

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.