插入(<<)和提取(>>)运载符的重载

来源:互联网 发布:音悦台 for mac 编辑:程序博客网 时间:2024/06/04 19:28
#include <iostream>#include <fstream>#include <string>#include <sstream>#include <vector>using namespace std;const int PoNum=2544;const int QuNum=636;class Point{public:        double x;double y;double z;double yita;};class Quad{public:        int p1;int p2;int p3;int p4;};//向量定义typedef vector<Point>  Po_VECT;typedef vector<Quad>  Qu_VECT;//运算重定义istream& operator>>(istream& is,Point& s){    is>>s.x>>s.y>>s.z>>s.yita;    return is;}ostream& operator<<(ostream& is,Point& s){    is<<s.x<<"\t"<<"\t"<<s.y<<"\t"<<"\t"<<s.z<<"\t"<<"\t"<<s.yita<<"\n";    return is;}istream& operator>>(istream& is,Quad& s){    is>>s.p1>>s.p2>>s.p3>>s.p4;    return is;}ostream& operator<<(ostream& is,Quad& s){    is<<s.p1<<"\t"<<"\t"<<s.p2<<"\t"<<"\t"<<s.p3<<"\t"<<"\t"<<s.p4<<"\n";    return is;}int main(){    Po_VECT Points;    Qu_VECT Quads;    char szBuf[200];    ifstream in("13 00064.dat",ios::in);    if(!in) return 0;    Point p;    Quad q;    in.getline(szBuf,200);    //in.getline(szBuf,200);    for(int i=0;i<PoNum;i++){        in>>p;        Points.push_back(p);        //cout<<p;    }    for(int i=0;i<QuNum;i++){        in>>q;        Quads.push_back(q);        //cout<<q;    }    for(int i=0;i<PoNum;i++){        p=Points.at(i);        cout<<p;    }    for(int i=0;i<QuNum;i++){        q=Quads.at(i);        cout<<q;    }    in.close();    return 0;}

0 0