/***************判断是否是合法的IPV4*****************************************/
bool isValidIP(string ip){
int num=0;
string::iterator it;
//判断前三段是否合法,如果存在的话
for(int i=0;i<3;i++){
int idx=ip.find(".");
if(idx==string::npos || idx==0) //如果某段为空或不足三段不合法
return false;
num=0;
for(int j=0;j<idx;j++){ //判断具体某一段是否合法
if(ip[j]<'0'||ip[j]>'9')
return false;
num=num*10+ip[j]-'0';
}
if(num>255)
return false;
ip.erase(ip.begin(),ip.begin()+idx+1);
}
//判断第四段是否合法
num=0;
if(ip.length()==0) //若不存在第四段则不合法
return false;
for(int k=0;k<ip.length();k++){ //若存在则判断是否合法
if(ip[k]<'0'||ip[k]>'9')
return false;
num=num*10+ip[k]-'0';
}
if(num>255)
return false;
//若各个段均合法整个ip才合法
return true;
}
#define print(ip) \
if(isValidIP(ip)) cout << ip << " is: valid" << endl; \
else cout << ip << " is: inValid" << endl;