我刚刚在这个答案中发现了一条评论说iostream::eof在循环条件下使用"几乎肯定是错误的".我通常使用类似的东西while(cin>>n)- 我猜是隐式检查EOF,为什么检查eof显式使用while (!cin.eof())错误?
它与scanf("...",...)!=EOF在C中使用有何不同(我经常使用没有问题)?
所以我使用过eof()的功能在我的很多程序,需要文件输入的,我的教授说,这是蛮好用的,但有几个人在等纷纷表示,我不应该没有真正指定的原因使用它.所以我想知道,有充分的理由吗?
我认为它与#includes有关,但这是我第一次尝试使用它们,所以我有点迷失.我只是想知道是否有人能够立即判断是否有明显的错误.
/** @file Translator.cpp */
#include <fstream>
#include "Translator.h"
#include <vector>
Translator(std::ifstream& fin) //error appears on this line
{
T1(fin);
T1.createTable(fin);
T2(fin);
T2.createTable(fin));
string temp;
while(!fin.eof())
{
fin >> temp;
message.push_back(temp);
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的时间.