cin>>hour>>delimiter>>minute关于cin的分隔符问题

今天读书时,看到一个问题,关于时间的输入,由此想到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 类型的变量来分隔数字类输入。

总之,可以利用我们接收所属类型之外的类型,作为分隔符,来分开提取我们所需数据。

 

你可能感兴趣的:(时间,分隔符,cin,delimiter)