为了账号安全,请及时绑定邮箱和手机立即绑定

while(cin)是什么意思?有知道的大佬吗?

while(cin)是什么意思?有知道的大佬吗?

蛊毒传说 2021-12-09 11:07:14
while (cin >>s){if(cin){}} 这里的IF括号中是什么意思?什么时候会运行IF中的内容 什么时候跳过IF
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

cin是C++编程语言中的标准输入流对象,即istream类的对象。cin主要用于从标准输入读取数据,这里的标准输入,指的是终端的键盘。此外,cout是流的对象,即ostream类的对象,cerr是标准错误输出流的对象,也是ostream 类的对象。

这里的标准输出指的是终端键盘,标准错误输出指的是终端的屏幕。

 cin读取数据也是从缓冲区中获取数据,缓冲区为空时,cin的成员函数会阻塞等待数据的到来,一旦缓冲区中有数据,就触发cin的成员函数去读取数据。

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

扩展资料

输入缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。每当按下回车键后,cin.get()   就会检测输入缓冲区中是否有了可读的数据。

cin.get()   还会对键盘上是否有作为流结束标志的   Ctrl+Z   或者   Ctrl+D   键按下作出检查,其检查的方式有两种:阻塞式以及非阻塞式。   

阻塞式检查方式指的是只有在回车键按下之后才对此前是否有   Ctrl+Z   组合键按下进行检查,非阻塞式样指的是按下   Ctrl+D   之后立即响应的方式。

如果在按   Ctrl+D   之前已经从键盘输入了字符,则   Ctrl+D的作用就相当于回车,即把这些字符送到输入缓冲区供读取使用,此时Ctrl+D不再起流结束符的作用。如果按   Ctrl+D   之前没有任何键盘输入,则   Ctrl+D   就是流结束的信号。



查看完整回答
反对 回复 2021-12-13
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

一般是保证正确输入的
假设 s是整形 那么输入非整形的 字符 浮点 都会结束循环
cin的返回值 你可以试一下cout<<(cin>>s); 看下如果输入不匹配类型的返回值 当返回值为0的时候 自然不执行if后面的语句了
另外 这种情况下 CTRL+Z也可以结束循环

查看完整回答
反对 回复 2021-12-13
  • 2 回答
  • 0 关注
  • 371 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信