文件流读取之EOF与Peek
来源:互联网 发布:php网教视频网站源码 编辑:程序博客网 时间:2024/06/04 15:13
今天,遇到了一个蛮奇怪的问题,为啥ifstream::eof()的运用往往跟预期不符合?
比如,下面这段code:
#include <iostream>#include <fstream>#include <stdio.h>using namespace std;int main(){ ifstream fin("test.txt"); if (!fin.is_open()) cout<<"can't open"<<endl; while(!fin.eof()) { char a,b,c; fin>>a>>b>>c; cout<<a<<' '<<b<<' 'c<<endl; } cout<<"it's end"<<endl; return 0;}
这里,test.txt文件共有两行,分别是”a b c”,”d e f”,但是程序输出将会多输出第二行一次:
a b c
d e f
d e f
it’s end
这是为啥呢?其实eof()函数,本质上就是返回eofbit的状态,当我们文件读取至最后的数据时,eofbit仍然为false,直到我们已经到文件结尾却尝试读取数据时,eofbit才会被设置为true。
解决办法,我们一般使用peek()查看是否已经到达文件结尾。
如:
while(fin.peek()!=EOF)
{
char a,b,c;
fin>>a>>b>>c;
cout<
0 0
- 文件流读取之EOF与Peek
- 关于peek()与eof()函数。
- c++读取文件操作之peek、>>和get
- C++中eof和peek
- C++文件读取末尾 eof()
- 处理文件与EOF
- peek和eof有什么区别
- 文件读取信息,eof()多读问题
- 关于文件读取的eof问题
- c++读取文件eof的疑惑
- C/C++文件之eof()
- C/C++文件之eof()
- C/C++文件之eof()
- C/C++文件之eof()
- EOF 与 BOF 之分
- eof()-检查文件读取是否达到文件末尾
- 11.从文件中读取文件一直到eof
- ifstream(一)之 eof() 函数——解决读取文件最后一个数据多读一次的方法
- 函数柯里化
- HM学习二
- JSP注释
- Cannot convert value of type [java.lang.String] to required type [java.util.Date] for property 'xxx'
- Trace32 加载MTK平台 SYS_MINI_RDUMP
- 文件流读取之EOF与Peek
- nginx学习8——nginx服务器信息隐藏,服务器名称修改
- 线性回归与逻辑斯提回归的区别
- 104 微服务基础概念
- 2017第八届蓝桥杯Java B组省赛第一题:购物单
- LIVE555
- 每天一个Linux命令(45):watch
- Windows DOS内部命令详解04——del、ren、cls、ver、date、time
- requestFeature() must be called before adding content