貌似cin完之后;读入的光标实际上是停在cin读入的c的后面;这时如果是用cin.get或cin.getline或getchar之类的东西再读入,就会吃进c后面的回车;而如果用cin读入,因为cin本身是会略过回车读入的,所以对cin不会有影响
#include<vector>
#include<iostream>
#include<algorithm>
#include<unordered_map>
#include<set>
#include<map>
#include<cstring>
#include<string>
using namespace std;
string a[13] = { "tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep",
"oct", "nov", "dec" };
string b[13] = { "####", "tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo",
"syy", "lok", "mer", "jou" };
void func1(int t)
{if (t / 13) cout << b[t / 13];if ((t / 13) && (t % 13)) cout << " ";if (t % 13 || t == 0) cout << a[t % 13];
}
void func2(string s)
{int t1 = 0, t2 = 0;string s1 = s.substr(0, 3), s2;if (s.length() > 4) s2 = s.substr(4, 3);for (int j = 1; j <= 12; j++){if (s1 == a[j] || s2 == a[j]) t2 = j;if (s1 == b[j]) t1 = j;}cout << t1 * 13 + t2;
}
int main()
{int n; string s;cin >> n;getchar();for (int i = 0; i < n; i++){getline(cin, s);if (s[0] >= '0' && s[0] <= '9')func1(stoi(s));elsefunc2(s);cout << endl;}return 0;
}