标签: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=”
标签:put 程序 一个 字符 amp class log eof col
原文地址:https://www.cnblogs.com/xy2656141474/p/12819237.html