C++中cin的返回值问题
作者:林三撇 发布时间:2021-07-04 17:59:22
标签:C++,cin,返回值
cin的返回值
今天在用STL时用到while(cin>>s1>>a>>s2>>b)这样的语句,本来所有的输入都是“string+int+string+int”格式的,但是结束标志却是“quit”,于是很好奇cin的输入到底是返回什么。
首先想到,cin是一个对象,那么到底是返回什么影响了while,查了很多博客才发现是操作符“>>”在起作用,这个操作符接收一个istream对象作为其做操作数,接收一个对象作为其右操作数。
”>>”操作符返回其左操作数作为结果,这样也就可以解释为什么上面可以将个几输入操作合并了。
原因在于得到输入后返回一个cin,接着可以继续操作读取了,而且在输入不符合类型和EOF时停止。
输入(cin)缓冲是行缓冲。
当从键盘上输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。
每当按下回车键后,cin 就会检测输入缓冲区中是否有了可读的数据。
cin流输入的返回值问题
感觉今天发现一个比较好的问题
while(cin>>n)
这个语句肯定经常看到把
但是
为什么可以用while来判断呢
难道cin>>n的返回值是bool 类型?
这时候,看源码 的 重要性就体现出来了
在ios里面有
operator void *() const {
if(state&(badbit|failbit) )
return 0;
return (void* )this;
}
这样一段代码
再来看这样一段文字
所以说 invalid state 时 返回值为0,否则是(void *)首地址
这样就可以用while来判断了
来源:https://blog.csdn.net/qq_34677945/article/details/69392223


猜你喜欢
- 一、Lombok从上一篇博客可看出,DAO接口类的编写变得简单,反过来看模型,编写还需要(私有属性、setter...getter...方法
- java 遍历listpackage com.tiandy.core.rest;import java.util.ArrayList;imp
- 在日常工作中,我们往往只关注 Java 内存使用情况,这主要是因为 Java 内存分析相关的工具比较多。与之不同的是,图片内存分析的工具比较
- 用户退出应用前给出一个提示是很有必要的,因为可能是用户并不真的想退出,而只是一不小心按下了返回键,大部分应用的做法是在应用退出去前给出一个D
- C语言时用if...else...来控制异常,Java语言所有的异常都可以用一个类来表示,不同类型的异常对应不同的子类异常,每个异常都对应一
- 最近正式入坑Flutter,首先从环境搭建开始,看了网上好多关于Windows环境搭建的资料,基本都是按官方文档写的,看完的感受是,还不如直
- 利用C#编写一个计算器。如下图,能够完成基本的四则运算。当然这个程序甚至还不上Windows附件那个自带的多功能计算器。 不过这个
- [DllImport("User32.dll", CharSet = CharSet.Auto)]  
- 本文实例为大家分享了shader实现基于世界坐标的贴图置换效果。效果如下:设置面板如下:可在面板上设置切换方向,与切换对象,及其切换速度。s
- 在自然语言处理(NLP)研究中,NGram是最基本但也是最有用的一种比对方式,这里的N是需要比对的字符串的长度,而今天我介绍的TrieTre
- 本文使用的Unicode+DLL+Debug的方式,因为不想最后生成的exe文件太大。环境搭建步骤如下:1、下载wxWidgets包:登录w
- MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoD
- 关于《JavaCV的摄像头实战》系列《JavaCV的摄像头实战》顾名思义,是使用JavaCV框架对摄像头进行各种处理的实战集合,这是欣宸作为
- Java 中的运算符与 C 语言基本一致。1、算术运算符操作符描述例子+加法 : 相加运算符两侧的值A + B 等于 30-减法 : 左操作
- 这个功能一共有两部分组成,第一部分是窗体代码,另外的一部分是一个辅助方法。直接贴出代码,以供大家参考:using System;using
- GZip是常用的无损压缩算法实现,在Linux中较为常见,像我们在Linux安装软件时,基本都是.tar.gz格式。.tar.gz格式文
- java 二分法算法的实例1、前提:二分查找的前提是需要查找的数组必须是已排序的,我们这里的实现默认为升序2、原理:将数组分为三部分,依次是
- 关于springmvc上传图片的方法小编给大家整理了两种方法,具体内容如下所示:第一种:(放在该项目下的物理地址对应的位置)a. 路径写法:
- 本文项目为大家分享了Java实现 * 面五子棋的具体代码,供大家参考,具体内容如下项目介绍:本次设计是基于知识点Java类和对象以及数组开发的
- 先准备好一个新闻实体类package com.zb.fragmentbestpractice/** * title:表示新闻的实体类 * c