今天需要写一个远程登陆的小界面,其中涉及到IP地址和Port的输入的检测!
其中需要检测的内容是:
1.要能输入域名、IP地址和端口
2.要支持IPv4、IPv6的IP地址
3.合法的检测IP地址
首先我自己写了一下IP地址的解析程序
bool CheckInputIP(const string &arg) { cout << "After My Check !" << endl; //first remove all space string ip = arg; //erase the head and the tail space ip.erase(0,ip.find_first_not_of(" ")); ip.erase(ip.find_last_not_of(" ")+1); //check every part is legal int num_dot = 0,start_pos=0; ip = ip + "."; for(size_t i=0;i<ip.length();i++) { if((ip[i] >= '0' && ip[i] <= '9') || ip[i] == '.') { if(ip[i] == '.') { num_dot++; if(num_dot>4) return false; string num = ip.substr(start_pos,(num_dot==4?ip.length()-1:i)-start_pos); //cout << "num is: " << num << endl; start_pos = i+1; int a = atoi(num.c_str()); if(!(a>=0 && a<=255)) return false; } } else return false; } ip.erase(ip.length()-1); cout << ip << endl; return true; }
被宝哥,指点了一下,说可以直接用正则表达式进行处理,而且代码的可扩展性还是很不错的,比自己的写的要靠谱很多(其实,我的那个代码里面如果你输入IP:0.0.0.123,是不会诊断出这个IP是不对的!)
作为一个软件开发人员而言,不会正则表达式千万不要说自己会软件开发!