最近帮老师带C++的课程设计,很多同学在使用很多fstream流的eof()函数进行

        while(!readfile.eof()){readfile>>x;}

时,会出现将最后一行数据读两次。
eof是end of file的意思,用来判断是否到了文件结尾。微软的文档说明如下:

bool eof( ) const;
Return Value
true if the end of the stream has been reached, false otherwise.
Remarks
The member function returns true if rdstate & eofbit is nonzero. For more information on eofbit,
see ios_base::iostate.

按照一般思维,应该就是到达文件尾,就eof()应返回true,但事实上,在读完最后一个数据时,eofbit仍然是false。只有当流再往下读取时,发现文件已经到结尾了,才会将标志eofbit修改为true。这也就是为什么使用while(!readfile.eof())会出多现读一行的原因。
既然已经知道了原因,那么,为了避免这样的情况,可以使用readfile.peek()!=EOF来判断是否到达文件结尾,这样就能避免多读一行。更改为:
    while(readfile.peek()!=EOF){readfile>>x;}
但是应注意,文件中最后一个数据之后,不应有多余的空白行。

此文章源自于【http://www.cnblogs.com/zhengxiaoping/p/5614317.html】

C++ fstream流的eof()函数多读一行的问题相关推荐

  1. 关于c和c++中的eof函数多读一个问题

    有不少人用eof函数碰到读多了一次的问题,但凡c/c++里的eof函数,比如feof,fstream对象的eof函数等等,都是相同的原理. 还原一下现场: #include<iostream&g ...

  2. c++关于eof()函数多读一行代码的解决方法

    1.最近在写c++文件读写的时候发现了一个问题,就是eof()函数用作循环结束条件会多读取一行尾部的结束标志(也就是乱码),所以我想了一个方法来解决该问题,再次分享给大家 stu *head,*p1, ...

  3. c++ eof()函数

    C++ eof()函数可以帮助我们用来判断文件是否为空,抑或是判断其是否读到文件结尾.在这里我们将会对其进行详细的介绍. C++编程语言中的很多功能在我们的实际应用中起着非常大的作用.比如在对文件文本 ...

  4. ifstream eof()函数

    用ifstream的eof(),竟然读到文件最后了,判断eof还为false.网上查找资料后,终于解决这个问题. 参照文件:http://tuhao.blogbus.com/logs/21306687 ...

  5. 文件处理之解决使用 feof(c语言)或(fin.eof())出现多读问题

    首先要明确当到达文件末尾时feof()与fin.eof()为真 所以我们是利用!feof()或 !fin.eof()来循环的. 我们通过分析 fin.eof()来得出结果. 1.eof()函数的作用是 ...

  6. 判断文件结束的几种方法和eof()函数

    看下面一段代码: ofstream ofs("a.txt"); int n = 1; while (--n) {     //不进入循环体   ofs<<n<&l ...

  7. c++ fstream流seekg()重定位问题

    在看c++中fstream时,突然想到一个问题.当读取完整个文件之后如果再想读取一遍该如何去写?首先想到seekg()函数把读指针重定位到文件开头.但是我试了一下发现指针并没有移动,后来才搞清楚原来是 ...

  8. C++文件操作之eof函数问题

    关于eof函数 fstream / ifstream / ofstream 类中的 成员函数eof()用来检测是否到达文件尾,如果到达文件尾返回非0值,否则返回0.原型是int eof(); 在使用这 ...

  9. 关于peek()与eof()函数。

    心血来潮把CSDN当成个人笔记也挺不错 第一篇博客,就是玩耍玩耍啦! 今天看见了eof函数的结尾判断问题,做了写小测试. 工具VS2017 首先创建一个txt文档里面包含3个数字数据 ///光标位于第 ...

最新文章

  1. MySQL之简单示例
  2. 重构是提高可测试性的主要手段 《设计模式》《代码重构》《从重构到模式》 《反模式》 重构时机 编写测试时候 修改BUG时候
  3. Linux(Ubuntu)设置环境变量(转载)
  4. 恐龙拼图游戏 - 恐龙拼图乐园积木游戏
  5. WebStorm错误--无法显示文件夹目录
  6. oracle监听 客户 实例,oracle 数据库实例 监听
  7. 基于php的地铁查询系统,省时方便的小程序:查地铁
  8. 安装Docker的三种方式
  9. Windows上安装Mac OS虚拟机
  10. Linux命令——压缩和解压缩
  11. 从挣扎突破到英雄联盟!中国SaaS头部企业阵营渐显
  12. 【资源下载】PCtoLCD2002 下载 资源分享 OLED取模软件
  13. 认知无线电matlab代码详解,Cognitive-Radio--Matlab-code 认知无线电, 通信, 仿真代码 238万源代码下载- www.pudn.com...
  14. SAP Script教程:SE71、SE78、SCC1、VF03、SO10-013
  15. 用python写一个爬取周杰伦所有歌词的爬虫
  16. python爬取文库,python爬取文库ppt的简单实现
  17. 节奏大师小游戏unity实现
  18. Ubuntu暂时无法解析域名“cn.archive.ubuntu.com”
  19. cad角度怎么画_超实用的CAD制图口诀,快收藏
  20. MOOC编程题#2: 魔兽世界之二:装备

热门文章

  1. 写计算机知识大全的结尾怎么写,自传的结尾怎么写
  2. Gradle配置本地仓库
  3. Mac下配置tomcat 报错Cannot run program “/Users/xxxxxxx/Library/Tomcat/bin/catalina.sh“ 解决办法
  4. Laravel Blade
  5. 土豆地方门户o2o小程序源码同城系统源码
  6. xv6---Lab4 traps
  7. 下载肝胆肿瘤TCGA原始数据
  8. oracle11g安装及用户创建与密码修改
  9. python常用模块——re
  10. 第一批因ChatGPT坐牢的人,已经上路了