代码为;
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
#include <vector>
int main()
{
std::vector<std::string> identity;
std::string temp;
std::ifstream file("in.txt");
while(getline(file, temp) && temp != "0")
{
identity.push_back(temp);
}
for (size_t i = 0; i < identity.size(); i++)
{
if (identity[i].size() != 18)
{
std::cout << 1<<std::endl;
continue;
}
for (int j = 0; j < 17; j++)
{
if (identity[i][j] < '0' && identity[i][j] > '9')
{
std::cout << 2 <<std::endl;
continue;
}
}
if (identity[i][17] != 'x' && (identity[i][17] < '0' || identity[i][17] > '9'))
{
std::cout << 3 <<std::endl;
continue;
}
//年
std::string tempYear;
for (int j = 0; j < 4; j++)
{
tempYear += identity[i][6 + j];
}
int year = atoi(tempYear.c_str());
if (year < 1900 || year > 2100)
{
std::cout << 4<<std::endl;
continue;
}
//月
std::string tempMonth;
for (int j = 0; j < 2; j++)
{
tempMonth += identity[i][10 + j];
}
int month = atoi(tempMonth.c_str());
if (month < 1 || month > 12)
{
std::cout << 5 <<std::endl;
continue;
}
//day
std::string tempDay;
for (int j = 0; j < 2; j++)
{
tempDay += identity[i][12 + j];
}
int day = atoi(tempDay.c_str());
if (day < 1 || day > 31)
{
std::cout << 6 << std::endl;
continue;
}
if (month == 4 || month == 6 || month == 9 || month == 11 )
{
if (day == 31)
{
std::cout << 6 <<std::endl;
continue;
}
}
if (month == 2)
{
if ( !((year % 4 == 0 && year % 100 != 0)
|| (year % 100 == 0 && year % 400 == 0)))
{
if (day == 29)
{
std::cout << 6 <<std::endl;
continue;
}
}
}
std::cout<<0 <<std::endl;
}
system("pause");
return 0;
}