标签:
现在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;
}
标签:
原文地址:http://blog.csdn.net/xpyimapingchuan/article/details/45176231