如果 ifstream 在第一次测试 while 时为空,则出错

Error if ifstream is empty on first test of while

本文关键字:出错 while ifstream 第一次 测试 如果      更新时间:2023-10-16

我有一个打开的输入文件f,其中包含整数,我有一个整数变量i

我愿意:

cout << "going in, ";
while(f >> i){
    cout << "made it in, ";
    //do stuff
}
cout << "and out." << endl;

如果f为空,则输出不是仅使条件失败并继续,而是:

going in, Segmentation fault: 11

为什么这种测试尝试如此不优雅地失败,并且只有在第一次失败时才失败?如果f有一个或多个整数,它将按预期和预期工作。

我的建议是:

while( f>>i, !f.bad() )