cin 可以用来从键盘输入数据;将标准输入重定向为文件后,cin 也可以用来从文件中读入数据。在输入数据的多少不确定,且没有结束标志的情况下,该如何判断输入数据已经读完了呢?

从文件中读取数据很好办,到达文件末尾就读取结束了。从控制台读取数据怎么办呢?总不能把控制台关闭吧?这样程序也运行结束了!

其实,在控制台中输入特殊的控制字符就表示输入结束了:

 在 Windows 系统中,通过键盘输入时,按 Ctrl+Z 组合键后再按回车键,就代表输入结束。在 UNIX/Linux/Mac OS 系统中,Ctrl+D 代表输入结束。

不管是文件末尾,还是 Ctrl+Z 或者 Ctrl+D,它们都是结束标志;cin 在正常读取时返回 true,遇到结束标志时返回 false,我们可以根据 cin 的返回值来判断是否读取结束。

cin 判断控制台(键盘)读取结束

输入若干个正整数,输出其中的最大值,程序该如何编写?

#include <iostream>
using namespace std;
int main()
{int n;int maxN = 0;while (cin >> n){  //输入没有结束,cin 就返回 true,条件就为真if (maxN < n)maxN = n;}cout << maxN <<endl;return 0;
}

在 Windows 下运行该程序,先输入以下整数:

10
30
93
206
8

然后在按下 Ctrl+Z 组合键(可以在当前行,也可以在新的一行),接着按下回车键,输入就结束了,此时 cin 返回 false,循环结束,得到了最大值。

完整的输入输出结果如下所示:

10↙
30↙
93↙
206↙
8↙
^Z↙
206

↙表示回车键,^Z表示 Ctrl+Z 组合键。

cin 判断文件读取结束

如果将标准输入重定向为某个文件,如在程序开始添加freopen(“test.txt”, “r”, stdin);语句,或者不添加上述语句,但是在 Windows 的“命令提示符”窗口中输入:

mycin < test.txt  //假设编译生成的可执行文件的名字为 mycin.exe

则都能使得本程序不再从键盘输入数据,而是从 test.txt 文件输入数据(前提是 test.txt 文件和 mycin.exe 在同一个文件夹中)。在这种情况下,test.txt 文件中并不需要包含 Ctrl+Z,只要有用空格或回车隔开的若干个正整数即可。

cin 读到文件末尾时,cin>>n就会返回 false,从而导致程序结束。例如,假定 test.txt 文件中的内容如下所示:

112
23123
34 444 55
44

对于前面的代码,在“命令提示符”窗口中先 cd 到 mycin.exe 所在目录,然后输入mycin < test.txt,则程序的输出是:

23123

C++ 读取结束的判断相关推荐

  1. C语言文件读取结束判断正确方式

    前言 对于在文件操作时,怎么样判断文件是否结束,以feof来判断文件读取结束是否正确? 一.MSDN对feof的介绍? 对与返回值的描述是: feof函数在第一次读取操作后返回一个非零值,该操作试图读 ...

  2. C语言文件操作(四) —— 文件读取结束的判定(feof、ferror)

            目录 1.feof.ferror 函数返回值 (1) feof 函数 (2) ferror 函数 2.feof.ferror 函数函数使用 fgetc.fgets的返回值说明都有提到一 ...

  3. c语言中关于文件读取结束的判定,以及feof函数的理解

    判断一个文件的读取是否结束,很多人,会想到用feof函数来判定,的确需要用到这个函数,但是仅仅靠这个函数是不够的. 错误用法: #include<stdio.h>int main() {F ...

  4. R语言stringr包str_ends函数、str_starts函数起始、结束字符串判断实战

    R语言stringr包str_ends函数.str_starts函数起始.结束字符串判断实战 目录 R语言stringr包str_ends函数.str_starts函数起始.结束字符串判断实战

  5. php读取某类型文件代码,php代码实现读取文件头判断文件类型

    php代码实现读取文件头判断文件类型,支持图片.rar.exe等后缀. 案例: //为图片的路径可以用d:/upload/11.jpg等绝对路径 $file = fopen($filename, &q ...

  6. go newscanner判断文件读取结束_Go单元测试-testing

    在开发程序中,很重要一点就是测试,测试可以保证代码的质量,保证每个函数可以正常运行.但是如何保证写出来的程序是否正确.单元测试一般是用来测试我们的代码逻辑有没有问题,有没有按照我们期望的运行,以保证代 ...

  7. linux判断文件写入完毕,linux文件编程——系统调用(打开、写入、读取、访问判断)...

    linux文件编程有两个方法:1.linux系统调用 2.C语言函数库 前者依赖的是linux系统,后者独立于操作系统而存在,不依赖于任何操作系统,因此,在不同的操作用使用C语言函数库的方法是一样的. ...

  8. python判断线程结束_判断Threading.start新线程是否执行完毕的实例

    新写自己的Threading类 class MyThread(threading.Thread):#我的Thread类 判断流程结束没 用于os shell命令是否执行判断 def __init__( ...

  9. 在c51语言的循环语句中 用作循环结束,在C51语言的循环语句中,用作循环结束条件判断的表达式为()...

    的任营领域都个战企业为结何一合的略经是以,语言用作战略经营须综合考领域虑这两个分析方面时必,. 循的表达式的一参与资产战略个以共同个独企业企业建立就是或两两个立的联盟上的. 环语对方的盟就盟各一家业( ...

最新文章

  1. Java网络编程基础(七)— RMI分布式网络编程
  2. PLATFORM软件有限公司
  3. tab栏切换 动画的相关方法上 动画的相关方法下 隐藏动画案例 隐藏动画练习
  4. mod4最优路径问题
  5. 【RabbitMQ】8、RabbitMQ之mandatory和immediate
  6. python中list函数_list()函数以及Python中的示例
  7. Pytest fixture参数化params
  8. rank,dense_rank,row_number使用和区别
  9. BGP 同步 黑洞 peergroup rr 联邦 full-mesh
  10. 平安性格测试题及答案_性格趣味小测试题 有趣的心理测试题大全及答案
  11. django 1.8 官方文档翻译:6-5-1 Django中的测试
  12. iphone 随机颜色生成
  13. BZOJ 1059: [ZJOI2007]矩阵游戏
  14. JS调用OCX控件过程
  15. 织梦dedecms包装设计生产公司网站模板(中英文版)
  16. 音视频采集-摄像头视频采集(原理与实现)
  17. php转换透明ico,php在线生成ico文件的代码_PHP教程
  18. css3探测光圈_CSS3按钮鼠标悬浮实现光圈效果
  19. 自定义View时,用到Paint Canvas的一些温故,讲讲用路径绘画实现动画效果(基础篇 三)
  20. 【数值预测案例】(6) LSTM、GRU 时间序列股票数据预测,附TensorFlow完整代码

热门文章

  1. html前端页面的基本骨架是,web前端入门到实战:css实现的骨架屏方案
  2. mysql保存一个文件怎么打开_悄悄告诉你,MySQL 通过SQL语句导出到Excel的方法-sql文件怎么打开...
  3. android java函数_java – 在android中创建全局函数
  4. Win11怎么设置提高电脑游戏性能
  5. windows7电脑删除文件特别慢的解决方法
  6. std::tuple还是struct?
  7. MySQL左关联、右关联、内关联查询
  8. jar包在windows后台运行,通过.bat文件
  9. java中为final变量赋值的几种方式
  10. SpringBoot整合阿里云OSS文件上传、下载、查看、删除