从GPLT总结C/C++的几种输入

前言

笔者准备参加2018.03.31的团体程序设计天梯赛,原本计划刷一刷GPLT的练习题,然而在各种课程和项目的摧残之下,从刷题计划变成看题计划。在我做过的二十几道题目中,笔者感到最困惑的是输入的格式,C++语法的输入显然不够用,常常需要借用C语法的输入。因此,特在此总结几种花式输入,以便日后查阅。

格式化输入

像这个题L1-009,要从键盘读取分数,这个时候有格式化输入是最方便的

1
2
5
2/5 4/15 1/30 -2/60 8/3
1
scanf("%lld/%lld", &a, &b);

同样的还有这个题L1-018,从键盘读取时间

1
19:05
1
scanf("%d:%d", &hour, &min);

读取一整句话

这个题L1-011是要从键盘读取一整句话,我们都知道C++的cin读取时是以空格或者回车作为结束符的,但是读取一整句话难免会出现空格。

1
2
I love GPLT!  It's a fun game!
aeiou
1
2
string s;
getline(cin, s);

更坑的读取

L1-032这个题要先读取一个数字和一个字符,再读取一整句话,原本以为是前面两种的综合体….

1
2
15 _
I love GPLT
1
2
3
4
5
6
int cnt;
char c;
string s;
cin >> cnt >> c;
getchar();
getline(cin, s);

假如没有getchar()输入完数字和字符后回车会直接跳过getline()的输入….原理一直忘记查了….

同样的还有这个L1-039

1
2
4
This is a test case
1
2
3
4
5
int n;
string s;
cin >> n;
getchar();
getline(cin, s);
-------------本文结束感谢您的阅读-------------