因為它,我學會了sscanf ^^
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e3+10,inf = 0x3f3f3f3f; map<string,int> p; int n; char op[N],ad[N]; int check(char str[]) { int a,b,c,d,e; if(sscanf(str,"%d.%d.%d.%d:%d",&a,&b,&c,&d,&e)!=5)return 0; if(a<0||a>255||b<0||b>255||c<0||c>255||d<0||d>255||e<0||e>65535)return 0; string ip; ip+=to_string(a); ip+='.'; ip+=to_string(b); ip+='.'; ip+=to_string(c); ip+='.'; ip+=to_string(d); ip+=':'; ip+=to_string(e); if(ip.length()!=strlen(str))return 0; return 1; } int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>op>>ad; if(!check(ad)) { puts("ERR");continue; } else { if(op[0]=='S') { if(!p[ad]) { puts("OK"); p[ad] = i; } else puts("FAIL"); } else { if(p[ad])cout<<p[ad]<<endl; else puts("FAIL"); } } } return 0; }