因为.eof()的机制,按照一般思维,应该就是到达文件尾,就eof()应返回true,但事实上,在读完最后一个数据时,eofbit仍然是false。只有当流再往下读取时,发现文件已经到结尾了,才会将标志eofbit修改为true
所以当刚创建fstream file时,就判断file.eof()的话,一定为false
在file.eof()前加file.peek();
peek函数用于读取并返回下一个字符,但并不提取该字符到输入流中;
此时file.eof()就能正确的返回了
因为.eof()的机制,按照一般思维,应该就是到达文件尾,就eof()应返回true,但事实上,在读完最后一个数据时,eofbit仍然是false。只有当流再往下读取时,发现文件已经到结尾了,才会将标志eofbit修改为true
所以当刚创建fstream file时,就判断file.eof()的话,一定为false
在file.eof()前加file.peek();
peek函数用于读取并返回下一个字符,但并不提取该字符到输入流中;
此时file.eof()就能正确的返回了