关于while(cin>>str)无法结束的问题

【生成C01/C10材料常数excel表】 计算橡胶件的邵尔硬度和C01/C10材料常数 阅读详情

 http://waret.iteye.com/blog/686817

 

在 C++Primer 中,作者经常使用 while(cin>>word) 类似的语法,但是如何结束,可能会出现疑惑。有的时候需要两次快捷键才能结束循环,有的时候却只需要一次循环。
    在 Unix 系统中的实际的现象为:
    * 当输入为“字符串,回车,Ctrl+D”的时候,跳出循环;
    * 当输入为“字符串,Ctrl+D,回车”的时候,不会跳出循环;
    * 当输入为“字符串,Ctrl+D,回车,Ctrl+D”的时候,跳出循环;
    * 当输入为“字符串,Ctrl+D,Ctrl+D”的时候,跳出循环;
    在 Windows 系统中的实际现象待考察。
    具体原因解释如下:
    输入(cin)缓冲是行缓冲。当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。每当按下回车键后,cin 就会检测输入缓冲区中是否有了可读的数据。
    cin 还会对键盘上是否有作为流结束标志的 Ctrl+Z 或者 Ctrl+D 键按下作出检查,其检查的方式有两种:阻塞式以及非阻塞式。
    阻塞式检查方式指的是只有在回车键按下之后才对此前是否有 Ctrl+Z 组合键按下进行检查,非阻塞式样指的是按下 Ctrl+D 之后立即响应的方式。如果在按 Ctrl+D 之前已经从键盘输入了字符,则 Ctrl+D的作用就相当于回车,即把这些字符送到输入缓冲区供读取使用,此时Ctrl+D不再起流结束符的作用。如果按 Ctrl+D 之前没有任何键盘输入,则 Ctrl+D 就是流结束的信号。
    阻塞式的方式有一个特点:只有按下回车之后才有可能检测在此之前是否有Ctrl+Z按下。还有一个特点,如果输入缓冲区中有可读的数据则不会检测 Ctrl+Z(因为有要读的数据,还不能认为到了流的末尾)。还有一点需要知道,Ctrl+Z产生的不是一个普通的ASCII码值,也就是说它产生的不是一个字符,所以不会跟其它从键盘上输入的字符一样能够存放在输入缓冲区。
    Windows系统中一般采用阻塞式检查 Ctrl+Z、Unix/Linux系统下一般采用非阻塞式的检查 Ctrl+D。

相关推荐

Golang实战:用Quic-Go v0.46.0搭建高性能文件传输服务(附完整代码)

本文详细介绍了如何使用Golang和Quic-Go v0.46.0构建高性能文件传输服务,涵盖服务端和客户端的完整实现。通过QUIC协议的多路复用、零RTT连接等特性,显著提升文件传输效率,特别适合高延迟或不稳定网络环境。文章提供完整代码示例和性能调优技巧,帮助开发者快速部署高效的文件传输解决方案。

weixin_33737134的博客 448

c语言 while(cin),C++中while(cin>>a)是什么意思

月关宝盒cin>>a代表获取键盘输入的值赋值给变量a,将cin>>a置于while的循环条件内即while(cin>>a),将会一直测试输入流是否正常。如果输入流正常,就会继续循环获取键盘值,如果输入流错误,或者达到文件末尾(在windows下Ctrl+Z,在Linux下Ctrl+D),该循环就会终止。测试代码如下:#includeusing namespace...

weixin_28733777的博客 1018

CPU核心、die和package的区别:从硬件小白到高手的进阶指南

本文深入浅出地解析了CPU核心、Die与Package的核心概念与区别,是硬件爱好者从入门到精通的实用指南。文章从硅晶圆制造讲起,阐述了物理核心与逻辑线程(如超线程技术)的工作原理,并详细介绍了封装(Package)的作用与多Die模块化设计。最后,结合实际应用场景,提供了选购、性能解读与优化调优的实用建议。

pz89012345的博客 202

while(cin>>str)的循环结束问题

这个问题源于《c++Primer第五版》p15的一个程序,我写了一个简化代码,如下 输入类型为整形或者浮点型 int val; while (cin >> val) { cout << "1" << endl; } cout << "over" << endl; 如果重复输入int类型的值的话,即使按了enter也会重复循环,只有在输入非int的值的时候,这个循环才会跳出输出over,或者按ctl+z,然后按enter。 输入类型为字

weixin_44656636的博客 1724

CVAT自动标注避坑指南:如何解决Nuclio工程创建失败和镜像拉取问题

本文是一份针对CVAT自动标注部署中常见问题的实战排障指南。文章深入剖析了Nuclio工程创建失败的根源,提供了网络配置、服务状态检查等系统性解决方案,并详细讲解了如何解决gcr.io等海外镜像拉取难题,帮助开发者顺利完成CVAT自动标注环境的搭建与部署。

weixin_29207533的博客 233

Unity集成阿里云语音AI:从麦克风录音到实时语音合成的全流程实现

本文详细介绍了在Unity中集成阿里云语音AI服务,实现从麦克风录音到实时语音合成的完整流程。通过调用阿里云的语音转文字和文字转语音接口,开发者可以快速为游戏或应用添加语音交互功能,提升用户体验。文章涵盖了环境配置、签名认证、音频处理及项目集成等核心步骤,并提供了实用的调试技巧。

weixin_29224589的博客 323

while循环输入字符串中以Esc键作为循环结束标识——scanf读取带空格字符串

需求在一个字符串输入循环中,判断输入的是字符串还是Esc按键,如果是Esc按键则结束循环。

一棵小草的空间 5768

从静态到动态:如何用Deformable 3DGS和4DGS实现高效动态场景建模

本文深入探讨了Deformable 3DGS和4DGS在动态场景建模中的技术突破,详细解析了这两种方法如何高效处理动态内容。Deformable 3DGS通过引入时间维度的变形场扩展传统3DGS,而4DGS则采用四维时空体素分解方法,两者均显著提升了动态场景建模的效率和质量,适用于虚拟现实、增强现实等应用场景。

weixin_29063035的博客 433

python学习 lesson5while循环和字符串

一、while循环 循环示意图 循环的作用就是让 指定的代码 重复的执行,while 循环最常用的应用场景就是让执行的代码按照指定的次数重复执行。 while 语句基本语法 while 条件语句: 满足条件执行的语句 else: 不满足条件执行的语句while 条件语句: 满足条件执行的语句 else: 不满足条件执行的语句 eg: 做100内的加法 1+2+3...

飞翔的罗老汉 719

【自监督学习完整教程】第 1 章:初识自监督学习

摘要: 自监督学习(SSL)是一种利用无标签数据自动生成伪标签进行模型训练的方法,有效降低了人工标注成本。本文对比了监督学习、无监督学习和SSL的差异,重点阐述了SSL通过设计PretextTasks(如图像旋转预测)从数据中提取深层特征的原理。实践部分以PyTorch实现图像旋转预测任务为例,展示了SSL的训练流程。实验表明,SSL能够学习通用视觉特征,适用于计算机视觉、自然语言处理等领域,尤其在标注数据稀缺的场景中表现优异。

u012133341的博客 260

K8s(二十一):在 Kubernetes 集群中部署 MySQL8.0 高可用集群(1主2从)

🔴 K8s(二十一):在 Kubernetes 集群中部署 MySQL8.0 高可用集群(1主2从)

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3万+

Java学习篇六——循环结构之while语句

写在前面:本人是借助两本参考书自学的,其中部分例子和语句均是来自参考书。第一本:《Java 编程指南》,[美] Budi Kurniawan 著,闫斌 贺莲 译。第二本:《第一行代码 Java 视频讲解版》,李兴华 马云涛 著 与 while 有关的有两种语句 第一种:while语句 whlie (判断语句) { statement; changeCycle; } while...

Yin_keepLearning的博客 391

全15万字丨PyTorch 深度学习实践、基础知识体系全集;忘记时,请时常回顾。

本篇博客介绍的知识是——深度学习之PyThon框架基础。这是深度学习/神经网络的基础,多次回顾,会有不一样的感受。书读百遍,其义自见。

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 5787

while(cin>>str)无法结束的问题

有网友问我其写的while(cin>>str)...为何无论如何总是无法结束?其实在你输入完字符串后,键下回车后,再ctrl+Z(windows环境下是ctrl+z,而linux/unix下是ctrl+d)就OK了!至于原因如下: cin是终端输入,也被称之为标准输入(standard input),cin的主要功能就是从标准输入读入一个值。 当从键盘上输入一串字符并按回车后,这些字符

bejustice的专栏 834

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

关于while(cin>>str)无法结束的问题.

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

Garand的专栏 1435

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

While(cin>>str)无法结束问题

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

traum的专栏 1259

C++:关于while(cin>>str)无法结束的问题

在C++ Primer中,作者经常使用while(cin>>word)类似的语法,但是如何结束,可能会出现疑惑。有的时候需要两次快捷键才能结束循环,有的时候却只需要一次循环。 在 Unix 系统中的实际的现象为: * 当输入为“字符串,回车,Ctrl+D”的时候,跳出循环; * 当输入为“字符串,Ctrl+D,回车”的时候,不会跳出循环; * 当输入为“字符串,Ctrl+D,回车,Ctrl

EWilsen 1857

while(cin>>str)无法结束的问题(转)

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://dreamerate.blogbus.com/logs/4743427.html有网友问我她写的while(cin>>str)...为何无论如何总是无法结束?其实在你输入完字符串后,键下回车后,再ctrl+Z(windows环境下是ctrl+z,而linux/unix下是ctrl+d)就OK了!至于原因如下:cin是终端

loyal_baby的专栏 1360

关于while(cin>>str)输入无法结束的问题(转+修改)

最近一直在看>发现一个问题,作者很喜欢使用while ( cin >> str )这样一种格式接受输入,我也在Dev-C++上照例题原样抄上运行,但是却不知道怎么结束输入。最后,参考网上高手们的意见,知道解决方法:只要输入原文本行之后回车(一定要回车)再按ctrl + z 出现 ^Z 再按回车,连续输入两遍就出来结果了。。。。   为什么要输入两遍呢?可参考以下内容: 输入缓冲是行缓冲。当从

lily854212198的专栏 823

while(cin>>str)结束的问题

转自http://dreamerate.blogbus.com/logs/4743427.html 有网友问我她写的while(cin>>str)...为何无论如何总是无法结束?其实在你输入完字符串后,键下回车后,再ctrl+Z(windows环境下是ctrl+z,而linux/unix下是ctrl+d)就OK了!至于原因如下:cin是终端输入,也被称之为标准输入(standard i

AndyElvis的专栏 6665

关于while(cin>>str)结束的问题 .

在 C++Primer 中,作者经常使用 while(cin>>word) 类似的语法,但是如何结束,可能会出现疑惑。有的时候需要两次快捷键才能结束循环,有的时候却只需要一次循环。     在 Unix 系统中的实际的现象为:     * 当输入为“字符串,回车,Ctrl+D”的时候,跳出循环;     * 当输入为“字符串,Ctrl+D,回车”的时候,不会跳出循环;     *

lskyne的专栏 1297
上一篇: 用 C++ 实现基于 session 的权限管理系统
下一篇: cin<<, cin.get,cin.getline等函数深入分析
sergery
博客等级 码龄18年 113粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值