goback add

C++输入输出重载中的问题(转换IP为二进制)

3951 点击·0 回帖
灯火互联
楼主

#include<iostream.h>            //这个代码很简单,这里只要知道在VC 6.0里面,要用这个头文件,不然编译通不过

//#include<iostream>

//using namespace std;

class IP

{

public:

 IP(int i=0,int j=0,int k=0,int m=0)

 {

  i=a;

  j=b;

  k=c;

  m=d;

 }

 friend istream; operator >> (istream ;input,IP ;h);

 friend ostream; operator << (ostream ;output,IP ;h);

 void print()      

 {

  printt(a);

  cout<<".";

  printt(b);

  cout<<".";

  printt(c);

  cout<<".";

  printt(d);

  cout<<'/n';

 }

 void printt(int a)

 {

  int b=128;

        for(int i=1;i<=8;i++)  //转换为八位二进制数

  {

   cout<<a/b;

   a=a%b;

   b=b/2;

        }

 }

private:

 int a;

 int b;

 int c;

 int d;

};

istream; operator >> (istream ;input,IP ;h)

{

 input>>h.a;

 input.ignore();    //读掉“.”

 input>>h.b;

 input.ignore();   //读掉“.”

 input>>h.c;

 input.ignore();   //读掉“.”

 input>>h.d;

return input;

}

ostream; operator << (ostream; output,IP ;h)

{

 h.print();                  //调用print() 函数,也可以在这里直接调用类中成员输出

 return output;

}

int main()

{

    IP ip;

 cin>>ip;

 cout<<ip;

 return 0;

}

运行结果:


喜欢0 评分0