C++:fstream流的eof()函数多读一行的问题
来源:互联网 发布:沈阳军区朱日和 知乎 编辑:程序博客网 时间:2024/06/06 03:42
问题:
在利用STL中fstream流读取txt文件的时候,往往需要使用eof()函数来判断是否读到文件末尾,但再调用eof()的时候往往会多输出最后一行的数据。
while(!readfile.eof())
{
readfile.read(x,9);
//readfile>>x;
}
会出现将最后一行数据读两次。 eof是end of file的意思,用来判断是否到了文件结尾。 按照一般思维,应该就是到达文件尾,就eof()应返回true,但事实上,在读完最后一个数据时,eofbit仍然是false。只有当流再往下读取时,发现文件已经到结尾了,才会将标志eofbit修改为true。这也就是为什么使用while(!readfile.eof())会出多现读一行的原因。
解决方法:
为了避免这样的情况,可以使用readfile.peek()!=EOF来判断是否到达文件结尾,这样就能避免多读一行。更改为:
while(readfile.peek()!=EOF)
{
readfile.read(x,9);
//readfile>>x;
}
但是应注意,文件中最后一个数据之后,不应有多余的空白行。
阅读全文
0 0
- C++:fstream流的eof()函数多读一行的问题
- C++ fstream流的eof()函数多读一行的问题
- C++ fstream流的eof()函数多读一行的问题
- C++ fstream流的eof()函数多读一行的问题
- 简单的解决EOF多读取一行的问题
- fstream中eof的机制
- error:while(ch = fgetc(fStream)!= EOF)和while(ch = fgetc(fStream)&& ch != EOF)是有问题的
- [C++]fstream与中文路径的问题
- 关于输入流状态函数cin.eof()的问题
- C的scanf函数+EOF+C扩展的fflush函数
- fstream的使用问题
- c语言中getchar函数的用法,涉及EOF文件结束符的问题
- c语言中getchar函数的用法,涉及EOF文件结束符的问题
- c语言中getchar函数的用法,涉及EOF文件结束符的问题
- C基于流fstream的文件操作
- C基于流fstream的文件操作
- C语言的EOF
- fstream::eof()
- VSCode断点调试PHP
- 用CSS画实心三角形和空心三角形
- 344. Reverse String
- java梯形九九乘法表
- springmvc笔记-4-标签库
- C++:fstream流的eof()函数多读一行的问题
- Python八皇后问题
- JavaScript知识汇总
- 有限扩散集团凝聚模型(DLCA)第三讲:流动水流中的凝聚模拟(1)
- PostQuitMessage(0);
- 装饰器
- Java之旅No.4:Java的继承(1)
- 2017 Multi-University Training Contest 3 && HDOJ 6058 Kanade's sum 【链表模拟】
- 倒排索引和正排索引