C++用while语句读取数量不定的输入数据的另一种写法:使用文件结束符

本文主要是介绍C++用while语句读取数量不定的输入数据的另一种写法:使用文件结束符,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

用C++编程时,会遇到一种情况,就是不确定用户会输入几组的数据,这种情况该怎么解决呢?大部分的人想到的都是,先声明一个变量n,让用户输入一个值,表示自己会输入几组数据,然后老老实实的输入数量正确的数据,得到正确的结果。
就如下面这样子的代码↓:对多个int型数据求和

#include<iostream>
using namespace std;int main() {int n = 0, value = 0, sum = 0;cout << "请输入一共有几组数据:";cin >> n;while (n) {cin >> value;sum += value;n--;}cout << "The sum is :" << sum<<endl;system("pause");return 0;
}

运行结果如下
在这里插入图片描述

另一种方法

上面方法确实能解决问题,可是万一用户他太懒,他不想去数我到底要输入几组数据,亦或者用户他只想随便输入玩玩,想结束就结束,并不想事先就表明我会输入几组数据,此时我们可以使用这种方法:
代码如下↓:

#include<iostream>
using namespace std;int main() {int value = 0, sum = 0;cout << "请输入数据:";while (cin >> value) {sum += value;}cout << "The sum is :" << sum<<endl;system("pause");return 0;
}

运行结果为:
在这里插入图片描述
上述代码是将istream作为while循环的判断条件(istream指的就是cin),其效果是检测输入流的状态,如果输入流是有效的,即输入流没有遇到错误,那么检测成功,执行while循环的循环体。
结束条件就是遇到文件结束符(end-of-file),或者遇到一个无效的输入时(例如你要求输入的是int型数据,结果你输入了一个string数据,那么该数据是无效的),istream对象的条件就会变为无效。无效的istream对象会使条件变为假。
因此,该方法的while循环会一直执行,直到遇到文件结束符,或者遇到一个无效的输入,while循环便会结束。然后执行下一条语句。

文件结束符(end-of-file)

相信有一些人对文件结束符有些疑问,此处简单说明,详细的解释说明可以去看我另一篇博客Windows文件结束符解释(C++)
在windows系统中,输入文件结束符的方法是敲:Ctrl + Z(按住Ctrl键的同时按Z键),然后按Enter键。
在UNIX系统中,包括Mac OS X系统中,文件结束符是:Ctrl + D。

有疑问欢迎私聊。

这篇关于C++用while语句读取数量不定的输入数据的另一种写法:使用文件结束符的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/255964

相关文章

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

Spring Boot读取配置文件的五种方式小结

《SpringBoot读取配置文件的五种方式小结》SpringBoot提供了灵活多样的方式来读取配置文件,这篇文章为大家介绍了5种常见的读取方式,文中的示例代码简洁易懂,大家可以根据自己的需要进... 目录1. 配置文件位置与加载顺序2. 读取配置文件的方式汇总方式一:使用 @Value 注解读取配置方式二

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认