0

我读过使用 istream eof 是“错误的”而不是“正式”的代码编写方式,那么使用什么代码更好呢?例如,我有以下代码:

using namespace std; //I've heard this is bad practice also

int main(){
    string line;
    ifstream myfile("example.txt");
    while(!myfile.eof()){
        getline(myfile, line);
    }//while
    //do something with line
}//main

我应该用什么替换 !myfile.eof() ?谢谢!

4

2 回答 2

3

关键是要实现getline返回对流的引用,true如果流正常且false前一个操作失败,则返回对流引用的布尔操作。这包括无法打开文件。

while (getline(myfile, line))
{
    // do something with line
}

while我不知道为什么您的原始示例在循环之外“做某事” 。

于 2013-04-23T02:21:30.177 回答
3
if (ifstream myfile("example.txt"))
{
    while (getline(myfile, line))
    {
        ...
    }
    if (!eof(myfile))
        std::cerr << "error before end of input file\n";
}
else
    std::cerr << "error opening input file\n";
于 2013-04-23T02:15:57.433 回答