求两IP是否在同一局域网(运子网掩码用)

#include <iostream>
#include <stdlib.h> #include <string> #include <sstream> using namespace std; int main() { string mask,ip1,ip2; char ch; int flag=0,ip11=0,ip12=0,ip13=0,ip14=0; int ip21=0,ip22=0,ip23=0,ip24=0; int mask1=0,mask2=0,mask3=0,mask4=0; stringstream ss; cin>>mask>>ip1>>ip2; if(&mask==NULL||&ip1==NULL||&ip2==NULL) return false; //得到掩码各项的int值 ss<<mask; ss>>mask1>>ch>>mask2>>ch>>mask3>>ch>>mask4; ss.clear(); //ss用完要clear //得到IP1各项的int值 ss<<ip1; ss>>ip11>>ch>>ip12>>ch>>ip13>>ch>>ip14; ss.clear(); //得到IP2各项的int值 ss<<ip2; ss>>ip21>>ch>>ip22>>ch>>ip23>>ch>>ip24; ss.clear(); if ((mask1<0||mask1>255)||(mask2<0||mask2>255)||(mask3<0||mask3>255)||(mask4<0||mask4>255) ||(ip11<0||ip11>255)||(ip12<0||ip12>255)||(ip13<0||ip13>255)||(ip14<0||ip14>255)|| (ip21<0||ip21>255)||(ip22<0||ip22>255)||(ip23<0||ip23>255)||(ip24<0||ip24>255) ) { flag=1; } else if((mask1&ip11)==(mask1&ip21)&&(mask2&ip12)==(mask2&ip22)&&(mask3&ip13)==(mask3&ip23)&& (mask4&ip14)==(mask4&ip24)) { flag=0; } else { flag=2; } cout<<flag<<endl; system("pause"); return 0; }

反思:运用stringstream将string依次转换为int,用&求与操作

原文地址:https://www.cnblogs.com/zhaodun/p/6910225.html