我什么时候停止从文件中读取?

时间:2010-12-10 12:41:14

标签: c++ stl flags ifstream eof

在阅读文件中的最后一个条目后,或者在尝试阅读之后,some_file.good()是否会返回false?也就是说,我应该写

while (input.good())
{
    getline(input, line);
    // ...process
}

getline(input, line);
while (input.good())
{
    // ...process
    getline(input, line);
}

2 个答案:

答案 0 :(得分:9)

试图超越那个......

你可以尝试:

while(getline(input, line))
{
// do stuff with line
}

应该添加,该流实现operator!,它会检查您通常会使用的标记。从getline返回的是输入流,但由于运算符,会检查标志。

答案 1 :(得分:0)

如前所述,当没有更多行时,getline返回零。如果设置了EOF标志(即在流上到达文件末尾),方法eof()也返回true:

if(input.eof())
{
// end of file
}