全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

浅谈c++中的while(cin)问题

xp系统中利用dev-cpp进行编程,语句while(cin>>str),str是个string类型,在一行中输入几个string,末位加个ctrl+z,输入没有结束,除非出入换行后,再输入ctrl+z才能跳出输入。一直不明白未什么,解释请看下。

输入缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。每当按下回车键后,cin.get()   就会检测输入缓冲区中是否有了可读的数据。cin.get()   还会对键盘上是否有作为流结束标志的   Ctrl+Z   或者   Ctrl+D   键按下作出检查,其检查的方式有两种:阻塞式以及非阻塞式。   

阻塞式检查方式指的是只有在回车键按下之后才对此前是否有   Ctrl+Z   组合键按下进行检查,非阻塞式样指的是按下   Ctrl+D   之后立即响应的方式。如果在按   Ctrl+D   之前已经从键盘输入了字符,则   Ctrl+D的作用就相当于回车,即把这些字符送到输入缓冲区供读取使用,此时Ctrl+D不再起流结束符的作用。如果按   Ctrl+D   之前没有任何键盘输入,则   Ctrl+D   就是流结束的信号。     

Windows系统中一般采用阻塞式检查   Ctrl+Z、Unix/Linux系统下一般采用非阻塞式的检查   Ctrl+D。楼主是在Windows系统下,因此使用阻塞式的   Ctrl+Z   来标识流的结束。    

这种阻塞式的方式有一个特点:只有按下回车之后才有可能检测在此之前是否有Ctrl+Z按下。还有一个特点就是:如果输入缓冲区中有可读的数据则不会检测Ctrl+Z(因为有要读的数据,还不能认为到了流的末尾)。还有一点需要知道:Ctrl+Z产生的不是一个普通的ASCII码值,也就是说它产生的不是一个字符,所以不会跟其它从键盘上输入的字符一样能够存放在输入缓冲区。明白了这几点之后就可以来解释楼主提出的问题了。   

从键盘上输入abcd^z   加   回车之后在Windows系统上是这样处理的:由于回车的作用,前面的   abcd   等字符被送到输入缓冲区(注意:上面说过了,^z不会产生字符,所以更不会存储到输入缓冲区,缓冲区中没有   ^z   的存在)。这时,cin.get()   检测到输入缓冲区中已经有数据存在(因此不再检查是否有   ^z   的输入),于是从缓冲中读取相应的数据。如果都读取完了,则输入缓冲区重新变为空,cin.get()   等待新的输入。可见,尽管有   ^z   按下,但是由于在此之前还有其它输入字符(abcd),所以流也不会结束。   

因此,输入流结束的条件就是:^z   之前不能有任何字符输入(回车除外),否则   ^z   起不到流结束的作用。

以上这篇浅谈c++中的while(cin)问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# c  # while  # cin  # c++ cin 作为while条件(详解)  # C++while和do-while语句求和详解  # 在while中使用cin>>a 为条件及注意事项说明  # 按下  # 区中  # 在此  # 回车键  # 给大家  # 指的是  # 键盘输入  # 几个  # 就会  # 是个  # 是在  # 放在  # 是这样  # 没有任何  # 中有  # 是从  # 不明白  # 希望能  # 下一  # 才有 


相关文章: 制作公司内部网站有哪些,内网如何建网站?  浅谈Javascript中的Label语句  如何快速打造个性化非模板自助建站?  b2c电商网站制作流程,b2c水平综合的电商平台?  南平网站制作公司,2025年南平市事业单位报名时间?  如何用美橙互联一键搭建多站合一网站?  如何通过虚拟主机空间快速建站?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  如何在景安服务器上快速搭建个人网站?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  如何在建站主机中优化服务器配置?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  建站主机功能解析:服务器选择与快速搭建指南  网站制作新手教程,新手建设一个网站需要注意些什么?  南京网站制作费用,南京远驱官方网站?  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  如何通过cPanel快速搭建网站?  智能起名网站制作软件有哪些,制作logo的软件?  宝塔建站无法访问?如何排查配置与端口问题?  如何通过VPS建站实现广告与增值服务盈利?  建站之星安装后如何自定义网站颜色与字体?  建站之星价格显示格式升级,你的预算足够吗?  教学网站制作软件,学习*后期制作的网站有哪些?  用v-html解决Vue.js渲染中html标签不被解析的问题  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  jQuery 常见小例汇总  香港服务器建站指南:免备案优势与SEO优化技巧全解析  如何通过.red域名打造高辨识度品牌网站?  C++如何使用std::optional?(处理可选值)  建站之星免费模板:自助建站系统与智能响应式一键生成  开源网站制作软件,开源网站什么意思?  名字制作网站免费,所有小说网站的名字?  如何在云主机上快速搭建网站?  定制建站流程解析:需求评估与SEO优化功能开发指南  专业商城网站制作公司有哪些,pi商城官网是哪个?  婚礼视频制作网站,学习*后期制作的网站有哪些?  如何使用Golang table-driven基准测试_多组数据测量函数效率  如何快速辨别茅台真假?关键步骤解析  如何挑选最适合建站的高性能VPS主机?  建站之星上传入口如何快速找到?  定制建站哪家更专业可靠?推荐榜单揭晓  如何在宝塔面板创建新站点?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  北京网站制作的公司有哪些,北京白云观官方网站?  建站之星与建站宝盒如何选择最佳方案?  学校为何禁止电信移动建设网站?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。