istream operator ueberladen



  • Hallo zusammen

    ich brauche fuer meine Point Klasse einen operator>>
    Ich habe die Dimensionen meines Punktes vorher so ausgelesen:

    ostream& operator<<(ostream& out, PointN p) 
    { 
    	int iDim = p.getDim();
    	for(int i = 0; i < iDim; i++)
    	{
    		out << p[i];
    	}
        return out; 
    }
    

    Das moechte ich jetzt gerne wieder umdrehen und die Werte die jetzt in einem file stehen wieder in meinen Punkt schreiben. Wie mache ich das?

    Bzw brauche ich sowas:

    istream_iterator<PointN> pos1;  //pos1 zeigt auf den Beginn meiner Bufferzeile
    

    Danke fuer eure Hilfe!



  • Du brauchst zuerst einen passenden Operator:

    istream& operator>>(istream& sin,PointN& val);
    {
      //lies die Elemente des Punkts ein
      return sin;
    }
    

    Damit kannst du dann Punkte z.B. per "cin>>pkt;" einlesen.

    Um das ganze mit copy zu kombinieren, verwendest du:

    copy(istream_iterator<PointN>(file),istream_iterator<PointN>(),back_inserter(liste));
    //   ^Iterator auf File             ^Ende-Iterator             ^Inserter (hängt ans Ende der Liste an)
    

Anmelden zum Antworten