C++之路:Visual Studio中如何指出文件结束
来源:互联网 发布:网络广告公司铭心营销 编辑:程序博客网 时间:2024/06/05 00:16
#include<iostream>using namespace std;int main(){ int sum = 0, value = 0; while (cin >> value) sum += value; cout << "Sum is: " << sum << endl; return 0;}
此程序用于读取不定数量的输入数据。但是如何是机器知道我们是否输入的是最后一个数据?
输入文件结束符:在windows中,输入文件结束符的办法是先输入ctrl + z(流结束标志), 然后按Enter键完成输入。
原因解析:
当从键盘输入一串字符并按回车后,这些字符会首先被送到输入缓冲区中存储。每当按下回车键后,cin.get()就会 检测输入缓冲区中是否有了可读的数据。cin.get()还会对键盘上是否有流结束标识的Ctrl-z或者ctrl-d键按下做出检查,其检查的方式有两种,阻塞式以及非阻塞式。
windows系统一般采用阻塞式检查ctrl-z,Unix/Linux系统下一般采用非阻塞式的检查ctrl-d.
阻塞式检查方式是指只有在回车键按下之后才对此前是否有ctrl-z组合键按下进行检查。另外,如果输入缓冲区中有可读的数据则不会检测ctrl-z,因为有可读数据,说明还未到流的末尾。需要注意的时,ctrl-z产生的不是一个普通的ascii字符,因此ctrl-z不会跟其他从键盘输入的字符一样能够存放在输入缓冲区中。因此,若使ctrl-z产生作用,输入ctrl-z之前不应输入任何字符,即输入回车键把之前输入的字符全部送入缓冲区中后,紧接着应输入ctrl-z,然后输入回车键,告知系统检测流结束符ctrl-z.
非阻塞式是指按下ctrl-d之后立即响应的方式。如果在ctrl-d输入之前已经从键盘输入了字符,则ctrl-d相当于回车,即把这些字符送到了输入缓冲区供读取使用,此时ctrl+d不在起流结束符的作用。若ctrl-d输入值钱没有任何键盘输入,则ctrl-d就是流结束的信号。
windows 下ctrl-z使用举例说明如下:
从键盘上输入abcd^z 再输入回车键后,系统处理如下:因为回车的作用,前面的abcd等字符被送到输入缓冲区中,而^z不会产生自负,因此不会存储到缓冲区中。这是,cin.get()检测到输入缓冲区中已经有数据存在,就不会检测有无^z存在,cin.get()从缓冲中读取相应的数据,如果读取完了,则输入缓冲区重新边为空,cin.get()等待新的输入,可见尽管有ctrl-z输入,但是之前有其他字符,系统并未监测到流结束符。
因此输入流结束符的条件就是:^z之前不能有任何字符输入(回车键除外),然后再用回车键通知系统做流结束符检测。
- C++之路:Visual Studio中如何指出文件结束
- 如何在Visual studio中组织Resource文件
- visual studio 建立c语言程序文件
- 如何在 Visual Studio 中像编辑普通 HTML 文件一样地编辑 SPARK 文件
- 如何在Visual Studio C#.Net WinForm 中 TreeView中右键选择节点进行处理
- C/C++如何在Visual Studio里建立并运行多个含main函数的文件
- Visual Studio之NuGet如何使用笔记
- Visual Studio中如何删除所有空行?
- Visual Studio 2012中编写C程序
- Visual Studio调试之符号文件
- Visual Studio调试之符号文件
- Visual Studio调试之符号文件
- Visual Studio调试之符号文件
- Visual Studio 中各种文件后缀名是什么意思
- 在Visual studio中生成.mex文件
- Visual studio中读取.mat文件
- visual studio新增文件到项目中
- Visual studio中添加库文件.lib
- 赋值运算符重载-LintCode
- [codeforces856D]Masha and Cactus
- 初识J2SE
- JavaScript字符串
- MongoDB MapReduce学习笔记
- C++之路:Visual Studio中如何指出文件结束
- 在序列化和返序列化深拷贝java对象时出现的 java.io.NotSerializableException
- GSL学习之一:下载并编译GSL库
- 验证单选框不能为空(以举报为例)
- 傻瓜也能建立github博客详解
- 实验楼-楼赛 第15期 Go语言-解题报告
- 在ubuntu中搜索文件或文件夹的方法
- 【问题处理】arcgis运行在android studio上jar包冲突解决
- 自定义View之开关