北邮oj IP地址问题(非sscanf)方法

//假设sscanf没学过的话..这样吧~字符串无脑分割
#include 

using namespace std;

int main()
{
	int T;
	cin>>T;
	while(T--)
	{
		string str;
		cin>>str;
		int flag=1;
		vector<string>myvector;
		if(str[str.size()-1]=='.') flag=0;  //自己添加的也是改变,那么就要判断
		else str=str+'.';
		if(str[0]=='.') flag=0; 
		else str='.'+str;
		int a=0;
		int b=str.find('.',a+1);
		while(b!=string::npos)//无脑分割字符串
		{
			if(str.substr(a+1,b-a-1)!="")  
			myvector.push_back(str.substr(a+1,b-a-1));
			else flag=0;
			a=b;
			b=str.find('.',a+1);	
		}
		if(myvector.size()!=4)   flag=0;
		for(int i=0;i<myvector.size();i++)
		{
			for(int j=0;j<myvector[i].size();j++)
			{
				if(myvector[i][j]-'0'>=10||myvector[i][j]-'0'<0) flag=0;
			}
			if(atoi(myvector[i].c_str())>255||atoi(myvector[i].c_str())<0) flag=0;
		}
		if(flag==0) cout<<"No"<<endl;
		else cout<<"Yes"<<endl;		
	}
	return 0;	
} 

你可能感兴趣的:(字符串分割,字符串)