遇到的关于ifstream::eof()的一点小问题

文件test.dat里有如下内容:10, 11, 12, 13, 100

结果使用

    int i_val;
    std::ifstream in("test.dat");
    while(!in.eof())
    {
        in >> i_val;
        std::cout << i_val << " ";
    }

对内容进行输出时总会输出2个100。原来是因为ifstream::eof()并不是在当流读取了文件最后的内容后就置为false,而是要在读完最后的内容后再尝试读取一次后才会。

所以,正确的写法可以是:

    int i_val;
    std::ifstream in("test.dat");
    in >> i_val;
    while(!in.eof())
    {
        std::cout << i_val << " ";
        in >> i_val;
    }

你可能感兴趣的:(遇到的关于ifstream::eof()的一点小问题)