C++输入输出重载中的问题(转换IP为二进制)
![]() | ![]() | |
![]() | #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; }
运行结果:
| |
![]() | ![]() |