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 类型的变量来分隔数字类输入。

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

 

转载于:https://my.oschina.net/zchking/blog/99317

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值