灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3055回复:0

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

楼主#
更多 发布于:2012-10-08 12:56

#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
游客

返回顶部