用作输入的文件是包含以下内容的.txt文件:
Line 1
Line 2
Line 3
Line 4
Line 5
它正在我的代码的第3行打开。然而,while循环永远不会终止,不断打印" Pass"到控制台,为什么在第5行文本之后找不到infile.eof()
?
int main(int argc, char** argv) {
ifstream infile;
infile.open("TEST.txt", ios::in);
if(infile.is_open()){
while(!infile.eof()){
cout << "Pass" << '\n';
}
}
else{
cout <<"Fail";
}
}
答案 0 :(得分:6)
因为你实际上从未实际消耗(读取)来自infile的任何东西来推进文件指针。代码只是不断检查EOF,但实际上并没有读取文件的任何内容。
答案 1 :(得分:1)
正如其他人所指出的那样,你不会做任何导致无限循环的infile。至于你如何做到这一点的问题,试试这个:
int main()
{
ifstream infile("TEST.txt", ios::in);
string input;
while(infile)
{
getline(infile, input);
<do something with "input">
}
return 0;
}