文件读取信息,eof()多读问题
来源:互联网 发布:java中的异常处理 编辑:程序博客网 时间:2024/06/07 11:22
从文件中读出数据,通过eof函数来判断该文件是否结束,但是文件最后的一个字符或者数字被多读一次。比如下面代码:
ifstream infile;infile.open("d:\\a.txt");if(!infile.is_open()) //打开文件{cout << "失败" << endl;}else{string str;while(!infile.eof()){infile >> str ;//读入内存cout << str << endl; }}infile.close();infile.clear();
在控制台中输出,每次都多输出一次。经过分析,个人理解,eof方法检验流中保留的是不是终结符,上边的while当运行到终结符时,while(!infile.eof())中的infile流中保留的还是上一次的信息,因此继续运行,将终结符读入str,读入不成功。因此str中保存的还是上一次的信息,接着再次输出,之后才跳出循环。
后来改成如下代码:
ifstream infile;infile.open("d:\\a.txt");if(!infile.is_open()) //打开文件{cout << "失败" << endl;}else{string str;while(!infile.eof())//判断流中保存的是不是终结符{infile >> str ;//读入内存if(infile.fail()) { break; }elsecout << str << endl; }}infile.close();infile.clear();
在输出之前对读取的数据进行检测,如果读取失败就不在进行输出。
如有不合理之处望各位牛人给予指正。不胜感激!
- 文件读取信息,eof()多读问题
- 关于文件读取的eof问题
- eof读取问题
- feof()函数读取文件和EOF结束符标志问题
- C++文件读取末尾 eof()
- 文件结尾eof问题
- 简单的解决EOF多读取一行的问题
- 文件操作eof()的问题
- 文件操作EOF()的问题
- 文件操作EOF的问题
- c++读取文件eof的疑惑
- 文件流读取之EOF与Peek
- ifstream(一)之 eof() 函数——解决读取文件最后一个数据多读一次的方法
- eof()-检查文件读取是否达到文件末尾
- 11.从文件中读取文件一直到eof
- c++的文件流中的eof()问题
- c++的文件流中的eof()问题
- C++文件操作之eof函数问题
- 一家互联网创业公司的“估值”是如何来的?
- Inter-Process Communication (IPC) Introduction and Sample Code
- System.InvalidOperationException: 对象的当前状态使该操作无效 【大量表单数据提交】
- HTML iframe 用法总结收藏
- 10个免费的web压力测试工具
- 文件读取信息,eof()多读问题
- iOS5 XCode4.2环境下iPhone3G和3GS调试问题解决方案
- varchar(8000)
- 创业公司该如何设计激励员工的期权池
- HDU 3589 Jacobi symbol 【二次剩余】
- 锁
- C连接mysql出现错误:Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.soc
- ie6,ie7下设置overflow:auto下滚动条不起作用
- hdu3584 Cube【三维树状数组】