现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

代码集锦:判断IPV4地址是否合法

2014-06-29 06:07 工业·编程 ⁄ 共 938字 ⁄ 字号 暂无评论

/***************判断是否是合法的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;

给我留言

留言无头像?