文章

4

粉丝

140

获赞

8

访问

37.2k

头像
C++ cin问题
推荐阅读
C语言
发布于2021年5月26日 00:28
阅读数 11.6k

1、cin可以连续从键盘读取想要的数据,以空格tab换行作为分隔符,输入停止且不予处理任其留在缓冲区。

2、当cin>>从缓冲区中读取数据时,若缓冲区中第一个字符是空格、tab或换行这些分隔符时,cin>>会将其忽略并清除,继续读取下一个字符,若缓冲区为空,则继续等待。但是如果读取成功,字符后面的分隔符是残留在缓冲区的,cin>>不做处理,清空输入缓冲区的操作为cin.clear()。 

【例】如果连续输入变量值的话,如下所示:

cin >> a >> b;

那么在bash输入的时候就可以:

a b

中间用空格Tab回车隔开,这样cin首先从缓冲区读入a,再读到分隔符停止且不处理,到读b时先读入之前残留的分隔符自动忽略并清除,然后正常读入b。

也即每遇到一次 >> x 便做一次输入动作。

3、遇到输入的数据类型与cin的变量不一样会怎样?

会停止输入并返回0(false)。

【例】如果期望输入一个int:

int a;
cin >> a;

结果输入:

1234A56

那么cin在读到A处就会停止并且返回“false”,并且将“A56”都留在缓冲区里了。

因此可做如下判断输入正确与否:

while(cin >> a){  
    ......  
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发