北郵oj IP地址問題(非sscanf)方法

//假設sscanf沒學過的話..這樣吧~字符串無腦分割
#include <bits/stdc++.h>

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;	
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章