ifstream中使用eof最后一个字符输出两次
来源:互联网 发布:阿里云 服务器 搭建 编辑:程序博客网 时间:2024/06/08 00:51
eof遇到的小问题
eof函数只有在读入不成功后才会置为true
比如 输入序列abbcad,当第一次读入d后,eof仍为false;只有当下一次读入,未读进去数据后,eof置为true,此时临时变量仍为上次的值,所以会出现两个d
网上解释原文:
因为当读入d时,流对象还并不知道是否已到达文件末尾,此时eof()仍然返回false。紧接着下次循环,执行到in >> a时,流对象读入文件结束符EOF,此时,这条语句执行失败,流对象并不会把文件结束符读入a,也不是像原作者说的又将末尾字符d再次读入到a中。实际情况是,in >> a此次并没有给a赋值,a仍然保留上次读入的值,自然也就是d了。此时eof返回true了,循环结束。
#include<iostream>#include<fstream>using namespace std;int main() {ifstream in("input.txt", ios::binary);char a;while (!in.eof()) {in >> a;cout << a << " ";}return 0;}
可改为输入后在判断一次eof
#include<iostream>#include<fstream>using namespace std;int main() {ifstream in("input.txt", ios::binary);char a;while (in >> a,!in.eof()) {cout << a << " ";}return 0;}or
#include<iostream>#include<fstream>using namespace std;int main() {ifstream in("input.txt", ios::binary);char a;while (!in.eof()) {in >> a;if (in.eof()) return 0;cout << a << " ";}return 0;}
0 0
- ifstream中使用eof最后一个字符输出两次
- 使用ifstream的get()函数读取文件中的字符后输出时,最后一个字符多输出一次
- C/C++ ifstream之eof() 对最后字符读双次的问题
- ifstream文件尾最后一行读两次
- ifstream(一)之 eof() 函数——解决读取文件最后一个数据多读一次的方法
- python 使用切片,每次输出都把 位于最后的一个字符砍掉
- JavaScript替换字符串中最后一个字符
- 删除字符串中最后一个字符
- 去掉一行中最后一个字符
- 最后一个字符(dict的使用)
- 关于Java奇数最后一个字符输出乱码问题
- 首尾动态输出一个字符,最后将所有一串整的字符输出
- ifstream eof()函数
- ReverseFind的用法 ; 查找字符中最后一个字符
- 360:最后一个字符
- c++-最后一个字符
- ios中输出一个*特殊字符
- 输出数中最小的一个数在最后!!!
- dependencies与dependencyManagement的区别
- 矩阵的TR迹的相关性质
- Time、Random、Mathf类
- unity中获得一帧中函数执行的时间…
- xml文件的读写和修改
- ifstream中使用eof最后一个字符输出两次
- java中volatile关键字的含义
- Python黑帽子:黑客与渗透测试编程之道
- oracle-----常用操作命令(摘要于朋友总结)
- 关于root 联想ZUK z2 遇到的一系列问题
- Google图片新高科技之WebP介绍
- 第十二周项目4 利用遍历思想求解图问题(2)
- 第十三周项目2 Kruskal算法验证
- Error:com.android.builder.internal.aapt.AaptException: Failed to crunch file