今天读书时,看到一个问题,关于时间的输入,由此想到cin的读取原理,在此分享给大家。
程序一:
#include <iostream>
int main()
{
using namespace std;
int hour;
int minute;
char delimiter;
cout<<"Enter the time as following format(14:30): "<<endl;//输入时间格式为hh:mm 例:13:30
cin<<hour<<delimiter<<minute; //注意此处 分别读取小时和分钟 存储
cout<<"Hour: "<<hour<<" Minute: "<<minute; //分别输出 hour 与 minute
return 0;
}
运行:
Enter the time as following format(14:30):
输入:13:40
Hour:13 Minute:40
其实这个程序主要反映的是 cin 的分隔符及数据读取原理问题。
第一点要说的是数据读取原理问题。
cin读入的数据,是根据cin<<variable 中 variable 的变量类型来的。
如果variable 为int
则cin原型为:
istream & variable>>(int &) //同理float,double,char等
所以程序中
输入13:40
由于hour 为整形 int
所以cin<<hour 只读取 13,把 :40 留在输入流中,
继续,cin<<delimiter 为char 所以只读取:
继续,cin<<minute 为int 读取40
又由于cin<< 返回值仍为cin对象,所以可以写为
cin<<hour<<delimiter<<minute
二 cin分隔符 问题
由以上分析,可知当我们用cin接收数据时,可以利用char 类型的变量来分隔数字类输入。
总之,可以利用我们接收所属类型之外的类型,作为分隔符,来分开提取我们所需数据。