现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
现在需要你用程序来判断IP是否合法。
//判断是否为合法IP #include<iostream> #include<string> #include<vector> using namespace std; int main() { string str; getline(cin,str); char ch; unsigned flag=0,k=0,value=0; vector<int> ivec(3,0); for (int i=0;i!=str.size();++i) { ch=str[i]; if (ch!='.') { ivec[k]=ch-48; k=k+1; if (i+1!=str.size() && str[i+1]=='.' ) { if (k==1) { value=ivec[0]; i=i+1; } if (k==2) { value=ivec[0]*10+ivec[1]; i=i+1; } if (k==3) { value=ivec[0]*100+ivec[1]*10+ivec[2]; i=i+1; } if (value<256) { flag++; k=0; } if (value>255) { break; } vector<int> ivec(3,0); } if (i+1==str.size()) { if (k==1) { value=ivec[0]; } if (k==2) { value=ivec[0]*10+ivec[1]; } if (k==3) { value=ivec[0]*100+ivec[1]*10+ivec[2]; } if (value<256) { flag++; k=0; break; } } } } if (flag==4) { cout<<"YES"<<endl; } else cout<<"NO"<<endl; system("PAUSE"); return 0; }
时间: 2024-10-10 22:58:30