Wpis z mikrobloga

Mirki, mam prostą strukturę punktu

struct point {

int x, y;

point() {}

}

I mam do niej przeciążony operator << (wypisania w strumieniach):

ostream& operator<<(ostream& out, point p) {

return out << "(" << p.x << " " << p.y << ")";

}

Da się jakoś analogicznie przeciążyć operator >>, żebym mógł sobie wczytać punkt pisząc po prostu

cin >> p
?

#programowanie #cpp
  • 9
tak, da się, (poprawione) kodziki:

ostream& operator<<(ostream& out, const point& p) { return out << ...; }

istream& operator>>(istream& in, point& p) { return in >> p.x >> p.y; }

(przy czym nie uwzglednilem sprawdzania bledu strumienia i zakladam format inputu "10 20", a nie "(10, 20)")
@piternet:

istream& operator>>(istream& in, point& p) {

char ch;

in >> ch >> p.x >> ch >> p.y >> ch;

return in;

}

może nie działać, pisane z głowy. I niezbyt dba o walidację danych, ale wiadomo o co chodzi. Pamiętaj, żeby przekazywać punkt jako zmienną (żeby dało się go zmienić) i zwrócić strumień, żeby dało się kontynuować łańcuch.