//容易遗漏的点在于数字串中有非法字符或字符'0'后跟字符的情况 //还有就是IP只有三个 #include <iostream> #include <sstream> #include <string> #include <deque> using namespace std; int main() { string inputstr; cin >> inputstr; inputstr += "."; string tmp; int count = 0; for (int i = 0; i < inputstr.size(); ++i) { if (tmp == "" && ((!isdigit(inputstr[i])) || (inputstr[i] == '0' && inputstr[i + 1] != '.'))) { cout << "NO" << endl; return 0; } if (inputstr[i] == '.') { if (stoi(tmp) <= 255 && stoi(tmp) >= 0) { tmp = ""; ++count; continue; } else { cout << "NO" << endl; return 0; } } tmp += inputstr[i]; } if (count == 4)cout << "YES" << endl; else cout << "NO" << endl; return 0; }