码迷,mamicode.com
首页 > 其他好文 > 详细

EOF产生错误的原因

时间:2020-05-02 20:49:50      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:put   程序   一个   字符   amp   class   log   eof   col   

假定在“data.txt”文档中存放了1 2 3 fstream file; 

 1  fstream file;  
 2 file.open("data.txt");
 3 if (!file) cout << "错误!未找到文件!" << endl;
 4   
 5  while(!file.eof()) //!!eof()返回true时是读到文件结束符0xFF,而文件结束符是最后一个字符的下一个字符。 
 6 {    //判断当前文件指针位置,是否处于文件结束(End Of File)位置,+
 7  file >> temp_num;
 8  en_allQ(QA,temp_num);//把文件的数字存入队列QA中
 9  }
10  
11 output(QA);

最后输出QA后会输出“1 2 3 3”,

eof()返回true的时候并不是读到文件的最后一个字符

而是读取到文件的结束符(0xFF),在文件最后一个字符的下一个

因此,当读到最后一个字符时,程序会多读一次(编译器会让指针停留在最后一个字符那里,然后重复读取一次,这也就是就上面最后一个字符会输出两次的原因。

 

ps:参考自“https://blog.csdn.net/s200820212/article/details/10322605?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158833730019724846439217%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.57644%2522%257D&request_id=158833730019724846439217&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-1”与“https://blog.csdn.net/rebel_321/article/details/4927464?ops_request_misc=”

 

EOF产生错误的原因

标签:put   程序   一个   字符   amp   class   log   eof   col   

原文地址:https://www.cnblogs.com/xy2656141474/p/12819237.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!