How do you validate that a string is a valid IPv4 address in C++?

前端 未结 17 2060
悲哀的现实
悲哀的现实 2020-12-04 23:21

I don\'t need to validate that the IP address is reachable or anything like that. I just want to validate that the string is in dotted-quad (xxx.xxx.xxx.xxx) IPv4 format, w

17条回答
  •  独厮守ぢ
    2020-12-05 00:04

    vector &split(const string &s, char delim, vector &elems) {
        stringstream ss(s);
        string item;
        while(getline(ss, item, delim)) {
           elems.push_back(item);
        }
        return elems;
    }
    
    vector split(const string &s, char delim) {
       vector elems;
       return split(s, delim, elems);
    }
    
    
    bool isIPAddress(string  ipaddr){
    
        if (ipaddr.length()){
                vector _ip=split(ipaddr,'.');
                if (_ip.size()==4){
                        for (int i=0; i < 4; i++){
                                for (int j=0; j < _ip[i].length(); j++)
                                        if (!isdigit(_ip[i][j])) return false;
                                if ((atoi(_ip[i].c_str()) < 0) || (atoi(_ip[i].c_str()) > 255)) return false;
                        }
                return true;
                }
        }
        return false;
     }
    

提交回复
热议问题