/* MYSTREAM.CPP -eli cPiste tietovirtaan ja sielt„ takaisin */ #include class cPiste { int x,y; public: cPiste(int ix=0, int iy=0) { x = ix; y = iy; } friend ostream &operator<< (ostream &os, const cPiste &p); friend istream &operator>> (istream &is, cPiste &p); }; ostream &operator<< (ostream &os, const cPiste &p) // Inserter { os << '(' << p.x << ',' << p.y << ')'; return os; } int skip(istream &is, char s) { char c; is >> c; if ( c != s ) { is.putback(c); return 0; } return 1; } istream &operator>> (istream &is, cPiste &p) // Extractor { int sulku = skip(is,'('); is >> p.x; skip(is,','); is >> p.y; if ( sulku ) skip(is,')'); return is; } istream &hopute(istream &is) // IO-manipulaattori { cout << "Anna uusi cPiste muodossa (x,y) tai x,y tai x y >"; return is; } int main(void) { cPiste p(3,7); do { cout << "cPiste on: " << p << endl; cin >> hopute >> p; } while ( !cin.eof() && !cin.fail() ); return 0; }